{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Cosine prediction\n",
    "\n",
    "### Data preparation\n",
    "In this notebook, we will use fost to predict a cosine curve. Let's import `pandas` and `numpy` first."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Next, generate cosine data."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:4: FutureWarning: The pandas.datetime class is deprecated and will be removed from pandas in a future version. Import from datetime instead.\n",
      "  after removing the cwd from sys.path.\n"
     ]
    }
   ],
   "source": [
    "train_df = pd.DataFrame()\n",
    "#we don't have actual timestamp in this case, use a default one\n",
    "train_df['Date'] = [pd.datetime(year=2000,month=1,day=1)+pd.Timedelta(days=i) for i in range(2000)] \n",
    "train_df['TARGET'] = [np.cos(i/2) for i in range(2000)]\n",
    "#there is not a 'Node' concept in this dataset, thus all the Node are 0\n",
    "train_df.loc[:, 'Node'] = 0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f80c42b97b8>"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#show first 40 data\n",
    "train_df.iloc[:40].set_index('Date')['TARGET'].plot()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "FOST only supports file path as input, save the data to `train.csv`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_df.to_csv('train.csv',index=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Load fost to predict future"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import fostool\n",
    "from fostool.pipeline import Pipeline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:46:43 fostool/task/config_handler.py 26 \\ - INFO - yaml handler load path: /root/HierST/src/config/default.yaml\n",
      "2021-11-08 09:46:43 fostool/dataset/data_utils.py 402 \\ - INFO - Detected Sample Frequency: <Day>.\n",
      "2021-11-08 09:46:43 fostool/dataset/data_utils.py 426 \\ - INFO - 2000 Rows Before Time Reindex.\n",
      "2021-11-08 09:46:43 fostool/dataset/data_utils.py 428 \\ - INFO - 2000 Rows After Time Reindex.\n",
      "2021-11-08 09:46:43 fostool/dataset/data_utils.py 429 \\ - INFO - --------------------\n",
      "2021-11-08 09:46:43 fostool/dataset/data_utils.py 457 \\ - INFO - 2000 Rows Before Fill Missing.\n",
      "2021-11-08 09:46:43 fostool/dataset/data_utils.py 461 \\ - INFO - 2000 Rows After Fill Missing.\n",
      "2021-11-08 09:46:43 fostool/dataset/data_utils.py 462 \\ - INFO - --------------------\n"
     ]
    }
   ],
   "source": [
    "#predict future 10 steps\n",
    "lookahead = 10\n",
    "fost = Pipeline(lookahead=lookahead, train_path='train.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:46:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.9837532142798106, val loss 1.1207878589630127\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 1.1207878589630127\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.8563873469829559, val loss 1.0255659818649292\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 1.0255659818649292\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.7682058115800222, val loss 0.9656972289085388\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.9656972289085388\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.6545088986555735, val loss 0.8323457837104797\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.8323457837104797\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.5395551969607671, val loss 0.7392954230308533\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.7392954230308533\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.41803252696990967, val loss 0.6145674586296082\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:46:59 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.6145674586296082\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.32809186975161236, val loss 0.4214208722114563\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.4214208722114563\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.20533942927916846, val loss 0.18617308139801025\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.18617308139801025\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.12697207058469454, val loss 0.09616108983755112\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.09616108983755112\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.05325042083859444, val loss 0.05969296023249626\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.05969296023249626\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.0261272427936395, val loss 0.011045633815228939\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.011045633815228939\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.012711387127637863, val loss 0.003730224911123514\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.003730224911123514\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.008007198184107741, val loss 0.004111938178539276\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.006259295002867778, val loss 0.0038592375349253416\n",
      "2021-11-08 09:47:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.005420396104454994, val loss 0.0015936356503516436\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.0015936356503516436\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.0032053233978028097, val loss 0.0009960811585187912\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.0009960811585187912\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.0030816590103010335, val loss 0.000641592894680798\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.000641592894680798\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.0024648708446572223, val loss 0.0006953171687200665\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.0018245108852473397, val loss 0.0006199749186635017\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.0006199749186635017\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.0013166117617705215, val loss 0.0006043225876055658\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.0006043225876055658\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.0011962133382136624, val loss 0.00043523628846742213\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.00043523628846742213\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.0010729129620206852, val loss 0.00041648070327937603\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.00041648070327937603\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.0009700010802286366, val loss 0.00017646198102738708\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 0.00017646198102738708\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.0008185463472424696, val loss 0.0001829482353059575\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.0008309520975065728, val loss 0.00022877224546391517\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.0007969176222104579, val loss 0.00020417450286913663\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.0007901331215786437, val loss 0.0003080877650063485\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 0.0007021018924812475, val loss 0.0003066306817345321\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 0.0007906443012567858, val loss 9.11616298253648e-05\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 9.11616298253648e-05\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 0.0005445698382876193, val loss 0.00014191849913913757\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 0.0005383791770630827, val loss 0.00014290313993114978\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 0.0004711984608244772, val loss 0.00011961474228883162\n",
      "2021-11-08 09:47:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 32, train loss 0.0004725469188997522, val loss 0.00014237627328839153\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 33, train loss 0.0004395933065097779, val loss 8.002224058145657e-05\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 8.002224058145657e-05\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 34, train loss 0.00040279777022078633, val loss 0.00010718034900492057\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 35, train loss 0.0003890898369718343, val loss 0.00017489181482233107\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 36, train loss 0.000370826094391911, val loss 0.00015895570686552674\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 37, train loss 0.000326368935930077, val loss 6.660210783593357e-05\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 6.660210783593357e-05\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 38, train loss 0.000304043398500653, val loss 9.743356349645182e-05\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 39, train loss 0.0003460123067876945, val loss 0.00010542407835600898\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 40, train loss 0.0003218976586746673, val loss 5.8938003348885104e-05\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:03 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 5.8938003348885104e-05\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 41, train loss 0.00035671840790503967, val loss 7.3762028478086e-05\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 42, train loss 0.0003643952586571686, val loss 0.00019734054512809962\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 43, train loss 0.0003397855907678604, val loss 5.6386477808700874e-05\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 5.6386477808700874e-05\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 44, train loss 0.00031750149112970877, val loss 0.0001231433270731941\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 45, train loss 0.0002986002291436307, val loss 0.00023416930343955755\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 46, train loss 0.00031680254081341747, val loss 8.603934111306444e-05\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 47, train loss 0.00029255746873483684, val loss 7.794171688146889e-05\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 48, train loss 0.0002650773070248154, val loss 0.00010389685485279188\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 49, train loss 0.0002868947485694662, val loss 4.59190305264201e-05\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:04 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 4.59190305264201e-05\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 50, train loss 0.00032999273874641705, val loss 0.00015885861648712307\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 51, train loss 0.00030028705320243415, val loss 0.00016762226005084813\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 52, train loss 0.0002703254043202226, val loss 0.00011668091610772535\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 53, train loss 0.0002994098249473609, val loss 3.504179767332971e-05\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_290a_10, current best val loss 3.504179767332971e-05\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 54, train loss 0.0002752603080201273, val loss 0.0002807751880027354\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 55, train loss 0.0005565030078287236, val loss 0.0001035518289427273\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 56, train loss 0.00036479677267683047, val loss 0.00036415766226127744\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 57, train loss 0.00032422708318335935, val loss 0.00023011979646980762\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 58, train loss 0.0002726726864542191, val loss 4.4203752622706816e-05\n",
      "2021-11-08 09:47:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 59, train loss 0.0003411484455379347, val loss 0.0001950981968548149\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 60, train loss 0.0005088027755846269, val loss 0.0004919813363812864\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 61, train loss 0.000454322721149462, val loss 7.44691860745661e-05\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 62, train loss 0.0003405533085848826, val loss 0.00014239524898584932\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 63, train loss 0.0004341539194380554, val loss 0.0007651319610886276\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.9101146658261617, val loss 0.734132707118988\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.734132707118988\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.6899108191331228, val loss 0.6729809641838074\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:06 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.6729809641838074\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.43876053392887115, val loss 0.41609737277030945\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.41609737277030945\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.25846422960360843, val loss 0.3238297700881958\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.3238297700881958\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.13775247583786646, val loss 0.13734440505504608\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.13734440505504608\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.04462528135627508, val loss 0.026259178295731544\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.026259178295731544\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.024659207634006936, val loss 0.022457748651504517\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:07 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.022457748651504517\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.013872084906324744, val loss 0.022416455671191216\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.022416455671191216\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.014952451301117739, val loss 0.002055989345535636\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.002055989345535636\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.01058015855960548, val loss 0.004173028748482466\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.0047294657755022245, val loss 0.0008968370384536684\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:08 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.0008968370384536684\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.0032350015438472233, val loss 0.0025702749844640493\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.002666536446971198, val loss 0.0005299308686517179\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.0005299308686517179\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.0016992636180172365, val loss 0.0006963375490158796\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.0012794633706410725, val loss 0.00041141462861560285\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.00041141462861560285\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.0008866034913808107, val loss 0.0003402176662348211\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:09 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.0003402176662348211\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.0007076998784517249, val loss 0.0001037357360473834\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3c13_10, current best val loss 0.0001037357360473834\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.00065306270456252, val loss 0.00029109985916875303\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.0005503421465012556, val loss 0.00022266458836384118\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.0004967254256674399, val loss 0.00017350840789731592\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.0004314455242517094, val loss 0.0007186800357885659\n",
      "2021-11-08 09:47:10 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.00041472378507023677, val loss 0.00029751608963124454\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.0003381851129233837, val loss 0.00015757966320961714\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.0003759250442575042, val loss 0.000374481052858755\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.00037800741362540674, val loss 0.0003495107521302998\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.0003309764700437275, val loss 0.00033188427914865315\n",
      "2021-11-08 09:47:11 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.0003331815726899852, val loss 0.00027999241137877107\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.7166369358698527, val loss 0.2936961054801941\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:12 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.2936961054801941\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.15311602192620435, val loss 0.07392895966768265\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.07392895966768265\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.030412248335778713, val loss 0.035870201885700226\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.035870201885700226\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.04199566412717104, val loss 0.020081346854567528\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.020081346854567528\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.017940218249956768, val loss 0.00666407635435462\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.00666407635435462\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.006224477896466851, val loss 0.005910440348088741\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.005910440348088741\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.006110052888592084, val loss 0.006515016313642263\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.003724678458335499, val loss 0.004213713109493256\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:12 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.004213713109493256\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.002005638302459071, val loss 0.003912898246198893\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.003912898246198893\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.0017820573217856388, val loss 0.0021725413389503956\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0021725413389503956\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.0014767563552595675, val loss 0.0009961429750546813\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0009961429750546813\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.001050101990889137, val loss 0.0011808377457782626\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.0009279508473506818, val loss 0.0016060430789366364\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.000780513781743745, val loss 0.001624367549084127\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.0007621924839137743, val loss 0.0008760615601204336\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0008760615601204336\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.0006613329169340432, val loss 0.0005300386110320687\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0005300386110320687\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.0006370772704637299, val loss 0.0006269874284043908\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.0006443648890126497, val loss 0.0008219985174946487\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.0005101439698288838, val loss 0.0006359210819937289\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.0005188604797391841, val loss 0.0006622822838835418\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.00042368700572599966, val loss 0.0007303302409127355\n",
      "2021-11-08 09:47:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.00041076876611138385, val loss 0.000534325314220041\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.00041274541581515223, val loss 0.0004159236850682646\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0004159236850682646\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.0004073727419987942, val loss 0.0004271241487003863\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.0004526844519811372, val loss 0.000804460549261421\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.0004985517928920066, val loss 0.0003755544312298298\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0003755544312298298\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.00046847895040021587, val loss 0.0002410589950159192\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0002410589950159192\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 0.00036086864323200035, val loss 0.0004905361565761268\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 0.0003319155900195862, val loss 0.000362323597073555\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 0.0002808023394512323, val loss 0.00038295300328172743\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 0.0003071460863187288, val loss 0.0002687570813577622\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 0.0002673432172741741, val loss 0.0003001865989062935\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 32, train loss 0.00026371441830027226, val loss 0.00026390934363007545\n",
      "2021-11-08 09:47:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 33, train loss 0.00023685571674529152, val loss 0.00021001645654905587\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.00021001645654905587\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 34, train loss 0.00023485481748745465, val loss 0.0002046708104899153\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0002046708104899153\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 35, train loss 0.00022253350471146405, val loss 0.0001625394361326471\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.0001625394361326471\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 36, train loss 0.00020017953769032223, val loss 0.00019826926290988922\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 37, train loss 0.00018958603565503532, val loss 0.00020618339476641268\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 38, train loss 0.00018278278245513016, val loss 0.00019689349574036896\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 39, train loss 0.00017710317964277542, val loss 0.00018799470853991807\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 40, train loss 0.0001643570576561615, val loss 0.0001696348044788465\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 41, train loss 0.00015341055041062646, val loss 0.00013694480003323406\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.00013694480003323406\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 42, train loss 0.00015191149213933386, val loss 0.00010851589468074962\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 0.00010851589468074962\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 43, train loss 0.00016147997909380743, val loss 0.00016644438437651843\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 44, train loss 0.0001417750221056243, val loss 0.00013490223500411958\n",
      "2021-11-08 09:47:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 45, train loss 0.00016188605513889343, val loss 0.00011923854617634788\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 46, train loss 0.00015637045241116235, val loss 9.70293112914078e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 9.70293112914078e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 47, train loss 0.0001423058844617723, val loss 9.932064131135121e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 48, train loss 0.00016313801946428916, val loss 0.0001575014175614342\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 49, train loss 0.00014462128274317365, val loss 8.765901293372735e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 8.765901293372735e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 50, train loss 0.00014971548201477466, val loss 5.613832763629034e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_6635_10, current best val loss 5.613832763629034e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 51, train loss 0.00013154078017881451, val loss 0.00012876818072982132\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 52, train loss 0.00014820852447883226, val loss 8.261448238044977e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 53, train loss 0.00017449637865259623, val loss 0.00013626893633045256\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 54, train loss 0.00017135732438570508, val loss 0.00010772101086331531\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 55, train loss 0.00012048978533130139, val loss 7.017323514446616e-05\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 56, train loss 0.00010778177662965997, val loss 0.00010584323899820447\n",
      "2021-11-08 09:47:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 57, train loss 0.00011727371020242572, val loss 0.00011283382627880201\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 58, train loss 0.00012341884697282998, val loss 8.325825911015272e-05\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 59, train loss 0.00015322704712161794, val loss 0.00010811399988597259\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 60, train loss 0.00011398269392278355, val loss 7.53328058635816e-05\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.9821110442280769, val loss 1.1408289670944214\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 1.1408289670944214\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.9220346286892891, val loss 0.9984788298606873\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.9984788298606873\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.8377762511372566, val loss 0.8812853097915649\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.8812853097915649\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.7067542672157288, val loss 0.6962380409240723\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:17 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.6962380409240723\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.5370586887001991, val loss 0.4418054521083832\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.4418054521083832\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.3624854627996683, val loss 0.2410901039838791\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.2410901039838791\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.23844395391643047, val loss 0.1417679637670517\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.1417679637670517\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.14336042944341898, val loss 0.1092478558421135\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.1092478558421135\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.06669798633083701, val loss 0.04978535696864128\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.04978535696864128\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.02261602645739913, val loss 0.018403103575110435\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:18 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.018403103575110435\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.007513003482017666, val loss 0.01012297160923481\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.01012297160923481\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.0039310875872615725, val loss 0.003304279176518321\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.003304279176518321\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.003028748615179211, val loss 0.001604164019227028\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.001604164019227028\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.002160248754080385, val loss 0.0016681284178048372\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.0016174592456081882, val loss 0.0015480250585824251\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0015480250585824251\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.0012632659272640012, val loss 0.0014770731795579195\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:19 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0014770731795579195\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.0009659182032919489, val loss 0.0013171870959922671\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0013171870959922671\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.0007954343527671881, val loss 0.0009945525089278817\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0009945525089278817\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.0006926173809915781, val loss 0.000916768447495997\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.000916768447495997\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.0006126469888840802, val loss 0.0008339649066329002\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0008339649066329002\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.0005332179789547808, val loss 0.0006231470033526421\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0006231470033526421\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.00045025829967926256, val loss 0.0004957435885444283\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:20 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0004957435885444283\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.00040917204387369566, val loss 0.000418889889260754\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.000418889889260754\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.000380491135729244, val loss 0.0004441124328877777\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.0003356365159561392, val loss 0.00041199871338903904\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00041199871338903904\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.000286661037534941, val loss 0.00034080908517353237\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00034080908517353237\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.0002652863295224961, val loss 0.0003624575037974864\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 0.0002597788188722916, val loss 0.0002890834293793887\n",
      "2021-11-08 09:47:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:21 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0002890834293793887\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 0.00022267504937190097, val loss 0.0002814803447108716\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0002814803447108716\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 0.0002013488829106791, val loss 0.0002352254232391715\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.0002352254232391715\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 0.00018940978407044895, val loss 0.00026383966905996203\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 0.00017478730296716094, val loss 0.00020338209287729114\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00020338209287729114\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 32, train loss 0.00017578072765900288, val loss 0.00023620660067535937\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 33, train loss 0.00016598735783190932, val loss 0.0002255517028970644\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 34, train loss 0.00015920947225822601, val loss 0.0002272298588650301\n",
      "2021-11-08 09:47:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 129 \\ - INFO - On epoch 35, train loss 0.00014616113367083017, val loss 0.0002343731903238222\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 129 \\ - INFO - On epoch 36, train loss 0.00013535339348891284, val loss 0.00017680723976809531\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00017680723976809531\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 129 \\ - INFO - On epoch 37, train loss 0.00013240741554909619, val loss 0.00015892974624875933\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00015892974624875933\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 129 \\ - INFO - On epoch 38, train loss 0.0001317113410550519, val loss 0.00018172507407143712\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 129 \\ - INFO - On epoch 39, train loss 0.00011901307061634725, val loss 0.00015984171477612108\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 129 \\ - INFO - On epoch 40, train loss 0.00011525855097715976, val loss 0.00013235404912848026\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:23 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00013235404912848026\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 41, train loss 0.00011002220344380476, val loss 0.00012686196714639664\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00012686196714639664\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 42, train loss 0.00010475016370037338, val loss 0.00012176023301435634\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00012176023301435634\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 43, train loss 9.938643142959336e-05, val loss 0.0001447161048417911\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 44, train loss 0.00010643107179930666, val loss 0.00010823248885571957\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 0.00010823248885571957\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 45, train loss 9.56337789830286e-05, val loss 0.0001215758893522434\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 46, train loss 9.717893044580705e-05, val loss 9.318213415099308e-05\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:24 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 9.318213415099308e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 47, train loss 9.12235982468701e-05, val loss 0.00010955234756693244\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 48, train loss 8.728917509870371e-05, val loss 6.958749872865155e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 6.958749872865155e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 49, train loss 8.274164520116756e-05, val loss 8.81528394529596e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 50, train loss 7.936643760331208e-05, val loss 8.376430196221918e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 51, train loss 8.638386043458013e-05, val loss 7.529948925366625e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 52, train loss 0.00010742806807684246, val loss 8.360458741663024e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 53, train loss 0.0001015534262478468, val loss 6.262651731958613e-05\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:25 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 6.262651731958613e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 54, train loss 8.686437922733603e-05, val loss 6.594460137421265e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 55, train loss 7.4136305556749e-05, val loss 9.352972847409546e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 56, train loss 8.222546193792368e-05, val loss 5.774814781034365e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 5.774814781034365e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 57, train loss 0.00011463188820926007, val loss 5.959653572062962e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 58, train loss 9.59769158725976e-05, val loss 5.5616572353756055e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 5.5616572353756055e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 59, train loss 7.876578956711455e-05, val loss 6.85606719343923e-05\n",
      "2021-11-08 09:47:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 129 \\ - INFO - On epoch 60, train loss 7.090707094903337e-05, val loss 0.0001098440625355579\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 129 \\ - INFO - On epoch 61, train loss 6.597221636184258e-05, val loss 4.8209749365923926e-05\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 4.8209749365923926e-05\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 129 \\ - INFO - On epoch 62, train loss 6.791200439693057e-05, val loss 5.4211886890698224e-05\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 129 \\ - INFO - On epoch 63, train loss 7.188883819253533e-05, val loss 3.804974403465167e-05\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_3bf8_20, current best val loss 3.804974403465167e-05\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 129 \\ - INFO - On epoch 64, train loss 6.873657866890426e-05, val loss 4.071540752192959e-05\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 129 \\ - INFO - On epoch 65, train loss 6.687755058010225e-05, val loss 8.227811485994607e-05\n",
      "2021-11-08 09:47:27 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 66, train loss 7.906947439551004e-05, val loss 3.972535705543123e-05\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 67, train loss 6.819435748184333e-05, val loss 5.9878668253077194e-05\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 68, train loss 6.469876825576648e-05, val loss 5.773184238933027e-05\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 69, train loss 6.137853506515967e-05, val loss 3.89892520615831e-05\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 70, train loss 5.6840591696527554e-05, val loss 6.188403494888917e-05\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 71, train loss 5.093462004879257e-05, val loss 4.170547617832199e-05\n",
      "2021-11-08 09:47:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 129 \\ - INFO - On epoch 72, train loss 4.6653269237140194e-05, val loss 4.94930318382103e-05\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 129 \\ - INFO - On epoch 73, train loss 6.082799927753513e-05, val loss 5.286342275212519e-05\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.9799752607941628, val loss 1.1488057374954224\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 1.1488057374954224\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.922536589205265, val loss 1.0710864067077637\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:29 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 1.0710864067077637\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.7592903673648834, val loss 0.5748211741447449\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.5748211741447449\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.4229729175567627, val loss 0.1432815045118332\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.1432815045118332\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.18654796294867992, val loss 0.07490773499011993\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.07490773499011993\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.07583341421559453, val loss 0.04561413824558258\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:30 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.04561413824558258\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.031125487061217427, val loss 0.023707536980509758\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.023707536980509758\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.015543971792794764, val loss 0.006619065534323454\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.006619065534323454\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.007400911475997418, val loss 0.012233261950314045\n",
      "2021-11-08 09:47:31 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.0036931275099050254, val loss 0.0034514584112912416\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.0034514584112912416\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.0022144974500406533, val loss 0.0005397822824306786\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.0005397822824306786\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.001228658358741086, val loss 0.00029458574135787785\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.00029458574135787785\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.0008802135416772217, val loss 0.0005026803119108081\n",
      "2021-11-08 09:47:32 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:33 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.000578189345105784, val loss 0.0005802383529953659\n",
      "2021-11-08 09:47:33 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:33 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.0004683875486080069, val loss 0.00029665010515600443\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:33 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:33 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.000460846844362095, val loss 0.00014494317292701453\n",
      "2021-11-08 09:47:33 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:33 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 0.00014494317292701453\n",
      "2021-11-08 09:47:34 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.00038144743302837014, val loss 0.00021717474737670273\n",
      "2021-11-08 09:47:34 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:34 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.00032546600232308265, val loss 8.469899330521002e-05\n",
      "2021-11-08 09:47:34 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:34 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 8.469899330521002e-05\n",
      "2021-11-08 09:47:34 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.0003433554338698741, val loss 8.843359682941809e-05\n",
      "2021-11-08 09:47:34 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.0002869619238481391, val loss 0.00015384900325443596\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.00028842882420576643, val loss 0.0003151129640173167\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.00037221740058157593, val loss 6.674814358120784e-05\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_51d8_20, current best val loss 6.674814358120784e-05\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.0005187663336982951, val loss 0.0001603698474355042\n",
      "2021-11-08 09:47:35 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:36 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.00030421247356571257, val loss 0.00022214199998416007\n",
      "2021-11-08 09:47:36 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:36 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.0002421239059913205, val loss 0.00010286494944011793\n",
      "2021-11-08 09:47:36 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:36 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.0001899984672490973, val loss 0.00015033855743240565\n",
      "2021-11-08 09:47:36 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:37 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.00020825448245886946, val loss 9.011767542688176e-05\n",
      "2021-11-08 09:47:37 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:37 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 0.0001662772865529405, val loss 0.0001219493497046642\n",
      "2021-11-08 09:47:37 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:37 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 0.00015178852936514886, val loss 6.757250957889482e-05\n",
      "2021-11-08 09:47:37 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 0.0002123195336025674, val loss 9.42465485422872e-05\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 0.00015196942240436329, val loss 0.00012861649156548083\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 0.00012706060624623206, val loss 0.00011813587479991838\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.6279660947620869, val loss 0.15418276190757751\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.15418276190757751\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.06744223879650235, val loss 0.039802420884370804\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.039802420884370804\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.040625918889418244, val loss 0.027163926512002945\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:38 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.027163926512002945\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.011938871233724058, val loss 0.009118586778640747\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.009118586778640747\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.007931994623504579, val loss 0.002625023713335395\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.002625023713335395\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.0028964438824914396, val loss 0.003375908127054572\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.0018132907280232757, val loss 0.0018409732729196548\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.0018409732729196548\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.0008487984232488088, val loss 0.0003822565486188978\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.0003822565486188978\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.0006012795129208826, val loss 0.000376629875972867\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.000376629875972867\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.00036690278284368105, val loss 0.0005643886397592723\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.0002997955998580437, val loss 0.0003372611536178738\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.0003372611536178738\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.00023804148804629222, val loss 0.00016775971744209528\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:39 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.00016775971744209528\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.00020655713160522282, val loss 0.00024853902868926525\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.00018182397980126552, val loss 0.000223331997403875\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.00016771475020505022, val loss 0.00017033301992341876\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.00015744993106636684, val loss 0.00019818334840238094\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.0001483459691371536, val loss 0.00019518610497470945\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.00013549456707551144, val loss 0.00015678144700359553\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.00015678144700359553\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.00012508603958849562, val loss 0.00014552018546964973\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.00014552018546964973\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.00011897902095370227, val loss 0.0001414207654306665\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.0001414207654306665\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.00010708193440223113, val loss 0.00010454859875608236\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.00010454859875608236\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.00010088625458593015, val loss 0.00010313370876247063\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:40 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 0.00010313370876247063\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 9.756979488884099e-05, val loss 0.00011816828191513196\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 9.36811829888029e-05, val loss 9.892944217426702e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 9.892944217426702e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 8.657998569105985e-05, val loss 9.485999908065423e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 9.485999908065423e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 8.203980451071402e-05, val loss 0.00011582662409637123\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 7.806012763467152e-05, val loss 7.347545033553615e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 7.347545033553615e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 7.531506980740232e-05, val loss 9.375320951221511e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 7.155395360314287e-05, val loss 0.0001080949223251082\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 6.879338252474554e-05, val loss 8.860753587214276e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 6.510582079499727e-05, val loss 6.803881115047261e-05\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:41 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 6.803881115047261e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 6.300082395682693e-05, val loss 0.00011394824832677841\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 32, train loss 6.120467014625319e-05, val loss 7.082369847921655e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 33, train loss 5.781149457106949e-05, val loss 8.661445463076234e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 34, train loss 5.7237077271565795e-05, val loss 5.732533827540465e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_42d9_20, current best val loss 5.732533827540465e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 35, train loss 5.584964037552709e-05, val loss 8.548905316274613e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 36, train loss 5.459958128994913e-05, val loss 7.705345342401415e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 37, train loss 5.21927190675342e-05, val loss 7.310319051612169e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 38, train loss 4.789779131897376e-05, val loss 7.050140993669629e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 39, train loss 4.705351329903351e-05, val loss 6.949729868210852e-05\n",
      "2021-11-08 09:47:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 40, train loss 4.49327303613245e-05, val loss 7.834377902327105e-05\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 41, train loss 4.339645693107741e-05, val loss 5.952413994236849e-05\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 42, train loss 4.321653568695183e-05, val loss 9.178040636470541e-05\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 43, train loss 4.204769493298954e-05, val loss 6.604639202123508e-05\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 44, train loss 4.09541044064099e-05, val loss 7.576186180813238e-05\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.992759498682889, val loss 1.080655813217163\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:43 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 1.080655813217163\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:44 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.9476401589133523, val loss 0.8647940754890442\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.8647940754890442\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.8418646021322771, val loss 0.8006345629692078\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.8006345629692078\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.7003533894365485, val loss 0.568802535533905\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:44 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.568802535533905\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.5076829899441112, val loss 0.24321098625659943\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.24321098625659943\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.32210585881363263, val loss 0.1139402911067009\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.1139402911067009\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.20737271959131415, val loss 0.05765629559755325\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:45 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.05765629559755325\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.10366791927001694, val loss 0.03298015519976616\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.03298015519976616\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.04211167533966628, val loss 0.016219481825828552\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.016219481825828552\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.012957824330607598, val loss 0.008795353583991528\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:46 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.008795353583991528\n",
      "2021-11-08 09:47:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.005522994472729889, val loss 0.003236187621951103\n",
      "2021-11-08 09:47:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:47 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.003236187621951103\n",
      "2021-11-08 09:47:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.003189375179565766, val loss 0.005063471384346485\n",
      "2021-11-08 09:47:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.002446779457386583, val loss 0.0032610842026770115\n",
      "2021-11-08 09:47:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.002072947173887356, val loss 0.002063196850940585\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.002063196850940585\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.0015413325957276604, val loss 0.0008353760349564254\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.0008353760349564254\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.001267317132177678, val loss 0.0008943889406509697\n",
      "2021-11-08 09:47:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.0010205535681135107, val loss 0.0008235739660449326\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.0008235739660449326\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.0008558954048732465, val loss 0.00022074404114391655\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.00022074404114391655\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.000770436515184966, val loss 0.0001606113073648885\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:49 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 0.0001606113073648885\n",
      "2021-11-08 09:47:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.0006142942345997488, val loss 0.00018320069648325443\n",
      "2021-11-08 09:47:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.0005976687323048034, val loss 7.057824404910207e-05\n",
      "2021-11-08 09:47:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:50 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 7.057824404910207e-05\n",
      "2021-11-08 09:47:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.0005406895678871396, val loss 0.00036675503361038864\n",
      "2021-11-08 09:47:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.0004973124966702678, val loss 5.118678018334322e-05\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 5.118678018334322e-05\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.00041285672209183264, val loss 8.354416786460206e-05\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.0003922408028632741, val loss 0.00010870268306462094\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.0003557505128397183, val loss 0.00011287361121503636\n",
      "2021-11-08 09:47:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.000334745598427782, val loss 0.0001440183405065909\n",
      "2021-11-08 09:47:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 0.00030707596372601324, val loss 0.00015064315812196583\n",
      "2021-11-08 09:47:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 0.00034279527608305216, val loss 0.00012028756464133039\n",
      "2021-11-08 09:47:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:53 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 0.0002698861644603312, val loss 4.878137769992463e-05\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:47:53 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:53 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 4.878137769992463e-05\n",
      "2021-11-08 09:47:53 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 0.00023417103379456833, val loss 6.631559517700225e-05\n",
      "2021-11-08 09:47:53 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:53 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 0.00022525229856414214, val loss 0.00011550372437341139\n",
      "2021-11-08 09:47:53 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:54 fostool/tools/trainer.py 129 \\ - INFO - On epoch 32, train loss 0.00021706995109773496, val loss 0.00010663629655027762\n",
      "2021-11-08 09:47:54 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:54 fostool/tools/trainer.py 129 \\ - INFO - On epoch 33, train loss 0.00019654070836788213, val loss 3.5583881981438026e-05\n",
      "2021-11-08 09:47:54 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:54 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 3.5583881981438026e-05\n",
      "2021-11-08 09:47:54 fostool/tools/trainer.py 129 \\ - INFO - On epoch 34, train loss 0.00018066173189171505, val loss 0.0001980654924409464\n",
      "2021-11-08 09:47:54 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:55 fostool/tools/trainer.py 129 \\ - INFO - On epoch 35, train loss 0.0002141852045579898, val loss 2.3395796233671717e-05\n",
      "2021-11-08 09:47:55 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:55 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 2.3395796233671717e-05\n",
      "2021-11-08 09:47:55 fostool/tools/trainer.py 129 \\ - INFO - On epoch 36, train loss 0.00018051665723429653, val loss 5.998320921207778e-05\n",
      "2021-11-08 09:47:55 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:55 fostool/tools/trainer.py 129 \\ - INFO - On epoch 37, train loss 0.000154376400049924, val loss 0.0001774531410774216\n",
      "2021-11-08 09:47:55 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:56 fostool/tools/trainer.py 129 \\ - INFO - On epoch 38, train loss 0.00016688465521755543, val loss 5.835306365042925e-05\n",
      "2021-11-08 09:47:56 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:56 fostool/tools/trainer.py 129 \\ - INFO - On epoch 39, train loss 0.00015707820156504485, val loss 0.00013183976989239454\n",
      "2021-11-08 09:47:56 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:56 fostool/tools/trainer.py 129 \\ - INFO - On epoch 40, train loss 0.00016338771886446258, val loss 0.00015163117495831102\n",
      "2021-11-08 09:47:56 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:57 fostool/tools/trainer.py 129 \\ - INFO - On epoch 41, train loss 0.00014956538308813998, val loss 0.0002875888312701136\n",
      "2021-11-08 09:47:57 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:57 fostool/tools/trainer.py 129 \\ - INFO - On epoch 42, train loss 0.0001514685420922681, val loss 9.121688344748691e-05\n",
      "2021-11-08 09:47:57 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:57 fostool/tools/trainer.py 129 \\ - INFO - On epoch 43, train loss 0.0001396657171426341, val loss 6.291810859693214e-05\n",
      "2021-11-08 09:47:57 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 129 \\ - INFO - On epoch 44, train loss 0.00013121265576707876, val loss 1.8846772945835255e-05\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 1.8846772945835255e-05\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 129 \\ - INFO - On epoch 45, train loss 0.00011824748269811442, val loss 1.0573811778158415e-05\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 1.0573811778158415e-05\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 129 \\ - INFO - On epoch 46, train loss 0.00011369568925477903, val loss 0.00020521941769402474\n",
      "2021-11-08 09:47:58 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 47, train loss 0.0001582543766496449, val loss 0.0005048292805440724\n",
      "2021-11-08 09:47:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 48, train loss 0.00019528060643510386, val loss 0.00012519799929577857\n",
      "2021-11-08 09:47:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:47:59 fostool/tools/trainer.py 129 \\ - INFO - On epoch 49, train loss 0.00015596995217492804, val loss 0.0006961113540455699\n",
      "2021-11-08 09:47:59 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 50, train loss 0.00017183722196601923, val loss 5.1580904255388305e-05\n",
      "2021-11-08 09:48:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 51, train loss 0.00012650446429192513, val loss 6.12070070928894e-05\n",
      "2021-11-08 09:48:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:00 fostool/tools/trainer.py 129 \\ - INFO - On epoch 52, train loss 0.00011788300616899505, val loss 8.806238838587888e-06\n",
      "2021-11-08 09:48:00 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:00 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 8.806238838587888e-06\n",
      "2021-11-08 09:48:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 53, train loss 0.00010208763408379376, val loss 2.0648163626901805e-05\n",
      "2021-11-08 09:48:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 54, train loss 0.00010359631480903111, val loss 7.807102520018816e-06\n",
      "2021-11-08 09:48:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:01 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 7.807102520018816e-06\n",
      "2021-11-08 09:48:01 fostool/tools/trainer.py 129 \\ - INFO - On epoch 55, train loss 0.00011177215690788051, val loss 5.278323806123808e-05\n",
      "2021-11-08 09:48:01 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 56, train loss 0.00011056394379755312, val loss 5.028376563132042e-06\n",
      "2021-11-08 09:48:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:02 fostool/tools/trainer.py 137 \\ - INFO - For model KRNNModel_d82f_30, current best val loss 5.028376563132042e-06\n",
      "2021-11-08 09:48:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 57, train loss 9.46241217951121e-05, val loss 7.963537791511044e-05\n",
      "2021-11-08 09:48:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:02 fostool/tools/trainer.py 129 \\ - INFO - On epoch 58, train loss 8.077417309819297e-05, val loss 8.962072024587542e-05\n",
      "2021-11-08 09:48:02 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 59, train loss 8.243215283569457e-05, val loss 4.834675928577781e-05\n",
      "2021-11-08 09:48:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 60, train loss 8.972874241986905e-05, val loss 0.00012979054008610547\n",
      "2021-11-08 09:48:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:03 fostool/tools/trainer.py 129 \\ - INFO - On epoch 61, train loss 8.751745454818857e-05, val loss 8.424452971667051e-05\n",
      "2021-11-08 09:48:03 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 62, train loss 8.624901039928028e-05, val loss 0.0002937687677331269\n",
      "2021-11-08 09:48:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 63, train loss 9.83166861591268e-05, val loss 5.718457032344304e-05\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:48:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:04 fostool/tools/trainer.py 129 \\ - INFO - On epoch 64, train loss 8.144152128476311e-05, val loss 5.414146653492935e-05\n",
      "2021-11-08 09:48:04 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 65, train loss 8.659573954487728e-05, val loss 6.058518010831904e-06\n",
      "2021-11-08 09:48:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:05 fostool/tools/trainer.py 129 \\ - INFO - On epoch 66, train loss 6.227881881799972e-05, val loss 4.435312075656839e-05\n",
      "2021-11-08 09:48:05 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.9839392141862349, val loss 1.0670393705368042\n",
      "2021-11-08 09:48:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:06 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 1.0670393705368042\n",
      "2021-11-08 09:48:06 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.8864653056318109, val loss 0.9274150133132935\n",
      "2021-11-08 09:48:06 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:06 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.9274150133132935\n",
      "2021-11-08 09:48:07 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.6642762693491849, val loss 0.2715208828449249\n",
      "2021-11-08 09:48:07 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:07 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.2715208828449249\n",
      "2021-11-08 09:48:08 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.33763418278910895, val loss 0.05591985583305359\n",
      "2021-11-08 09:48:08 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:08 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.05591985583305359\n",
      "2021-11-08 09:48:08 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.1622989523139867, val loss 0.03216082230210304\n",
      "2021-11-08 09:48:08 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:08 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.03216082230210304\n",
      "2021-11-08 09:48:09 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.03566937008872628, val loss 0.0037471584510058165\n",
      "2021-11-08 09:48:09 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:09 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.0037471584510058165\n",
      "2021-11-08 09:48:09 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.00893809422003952, val loss 0.006605540867894888\n",
      "2021-11-08 09:48:09 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:10 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.00352413859218359, val loss 0.0013305225875228643\n",
      "2021-11-08 09:48:10 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:10 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.0013305225875228643\n",
      "2021-11-08 09:48:11 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.001352541825988076, val loss 0.0017996764509007335\n",
      "2021-11-08 09:48:11 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:11 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.0009065234282223338, val loss 0.0002841136301867664\n",
      "2021-11-08 09:48:11 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:11 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.0002841136301867664\n",
      "2021-11-08 09:48:12 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.0005586374185937034, val loss 0.0003862852172460407\n",
      "2021-11-08 09:48:12 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.00045111391492272645, val loss 0.00042814287007786334\n",
      "2021-11-08 09:48:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:13 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.00037386517744215035, val loss 0.00027983254403807223\n",
      "2021-11-08 09:48:13 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:13 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.00027983254403807223\n",
      "2021-11-08 09:48:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.0003634877621979368, val loss 0.0002248739911010489\n",
      "2021-11-08 09:48:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:14 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.0002248739911010489\n",
      "2021-11-08 09:48:14 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.0003263682830782438, val loss 0.0004526189586613327\n",
      "2021-11-08 09:48:14 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:15 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.000325068849964406, val loss 0.00030636019073426723\n",
      "2021-11-08 09:48:15 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.0003026467298199846, val loss 0.0002690098190214485\n",
      "2021-11-08 09:48:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:16 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.00038222027466293764, val loss 0.0009473409736528993\n",
      "2021-11-08 09:48:16 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:17 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.0002731755481694232, val loss 0.00013955438043922186\n",
      "2021-11-08 09:48:17 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:17 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.00013955438043922186\n",
      "2021-11-08 09:48:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.00024019547510595822, val loss 0.00015395478112623096\n",
      "2021-11-08 09:48:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:18 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.00025437399877277625, val loss 0.00011287730012554675\n",
      "2021-11-08 09:48:18 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:18 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.00011287730012554675\n",
      "2021-11-08 09:48:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.00020882187924474817, val loss 0.00030704011442139745\n",
      "2021-11-08 09:48:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:19 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.0002466758120466362, val loss 0.00018710327276494354\n",
      "2021-11-08 09:48:19 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:20 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.0004568422538630495, val loss 0.0008169513312168419\n",
      "2021-11-08 09:48:20 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.00042894496767654675, val loss 0.0006787394522689283\n",
      "2021-11-08 09:48:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:21 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.00022358148734466258, val loss 0.0003003939054906368\n",
      "2021-11-08 09:48:21 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.00021476009648970583, val loss 0.00011864629777846858\n",
      "2021-11-08 09:48:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:22 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 0.0001921527648598633, val loss 0.0004077345656696707\n",
      "2021-11-08 09:48:22 fostool/tools/trainer.py 130 \\ - INFO - ------------\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:48:23 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 0.0001588119147610004, val loss 0.0001072921950253658\n",
      "2021-11-08 09:48:23 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:23 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 0.0001072921950253658\n",
      "2021-11-08 09:48:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 0.00014009015153119847, val loss 0.00019487795361783355\n",
      "2021-11-08 09:48:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:24 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 0.00015382598543179813, val loss 0.0003878181742038578\n",
      "2021-11-08 09:48:24 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:25 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 0.00018929006248733705, val loss 0.0002877039951272309\n",
      "2021-11-08 09:48:25 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 32, train loss 0.0002234305171772245, val loss 0.00023483861878048629\n",
      "2021-11-08 09:48:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:26 fostool/tools/trainer.py 129 \\ - INFO - On epoch 33, train loss 0.0001638304655154405, val loss 0.00023361849889624864\n",
      "2021-11-08 09:48:26 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:27 fostool/tools/trainer.py 129 \\ - INFO - On epoch 34, train loss 0.00014186512072972783, val loss 0.00023205507022794336\n",
      "2021-11-08 09:48:27 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 35, train loss 0.00013719688286073506, val loss 0.0001552526227897033\n",
      "2021-11-08 09:48:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:28 fostool/tools/trainer.py 129 \\ - INFO - On epoch 36, train loss 0.00017663061192830685, val loss 0.0003701176610775292\n",
      "2021-11-08 09:48:28 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:29 fostool/tools/trainer.py 129 \\ - INFO - On epoch 37, train loss 0.00019672423447693953, val loss 9.871714428300038e-05\n",
      "2021-11-08 09:48:29 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:29 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 9.871714428300038e-05\n",
      "2021-11-08 09:48:29 fostool/tools/trainer.py 129 \\ - INFO - On epoch 38, train loss 0.00010984975431876427, val loss 0.000223478302359581\n",
      "2021-11-08 09:48:29 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:30 fostool/tools/trainer.py 129 \\ - INFO - On epoch 39, train loss 0.00013505354184995997, val loss 0.00021134862618055195\n",
      "2021-11-08 09:48:30 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:31 fostool/tools/trainer.py 129 \\ - INFO - On epoch 40, train loss 0.00014400385473643175, val loss 0.00014255743008106947\n",
      "2021-11-08 09:48:31 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:31 fostool/tools/trainer.py 129 \\ - INFO - On epoch 41, train loss 0.0001131186155279548, val loss 0.00011202021414646879\n",
      "2021-11-08 09:48:31 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:32 fostool/tools/trainer.py 129 \\ - INFO - On epoch 42, train loss 8.911053737392649e-05, val loss 0.0005646519712172449\n",
      "2021-11-08 09:48:32 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:33 fostool/tools/trainer.py 129 \\ - INFO - On epoch 43, train loss 0.00013654796996640718, val loss 0.00017380765348207206\n",
      "2021-11-08 09:48:33 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:33 fostool/tools/trainer.py 129 \\ - INFO - On epoch 44, train loss 0.00012107341634956273, val loss 0.00020912839681841433\n",
      "2021-11-08 09:48:33 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:34 fostool/tools/trainer.py 129 \\ - INFO - On epoch 45, train loss 0.00013920837029052728, val loss 6.509062222903594e-05\n",
      "2021-11-08 09:48:34 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:34 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 6.509062222903594e-05\n",
      "2021-11-08 09:48:34 fostool/tools/trainer.py 129 \\ - INFO - On epoch 46, train loss 0.00015473336746006018, val loss 0.00010008866956923157\n",
      "2021-11-08 09:48:34 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:35 fostool/tools/trainer.py 129 \\ - INFO - On epoch 47, train loss 0.00011835459868465973, val loss 0.00023956205404829234\n",
      "2021-11-08 09:48:35 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:36 fostool/tools/trainer.py 129 \\ - INFO - On epoch 48, train loss 0.0001159338330167388, val loss 9.523450717097148e-05\n",
      "2021-11-08 09:48:36 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:36 fostool/tools/trainer.py 129 \\ - INFO - On epoch 49, train loss 8.410630239681764e-05, val loss 8.253670966951177e-05\n",
      "2021-11-08 09:48:36 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:37 fostool/tools/trainer.py 129 \\ - INFO - On epoch 50, train loss 7.322330334731801e-05, val loss 0.00010730610665632412\n",
      "2021-11-08 09:48:37 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 51, train loss 6.525903617412868e-05, val loss 0.00013210123870521784\n",
      "2021-11-08 09:48:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:38 fostool/tools/trainer.py 129 \\ - INFO - On epoch 52, train loss 7.006782206272791e-05, val loss 0.00010367455251980573\n",
      "2021-11-08 09:48:38 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 53, train loss 6.559162681117992e-05, val loss 0.00015324712148867548\n",
      "2021-11-08 09:48:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:39 fostool/tools/trainer.py 129 \\ - INFO - On epoch 54, train loss 7.594315915908241e-05, val loss 3.093042687396519e-05\n",
      "2021-11-08 09:48:39 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:39 fostool/tools/trainer.py 137 \\ - INFO - For model SandwichModel_3f7a_30, current best val loss 3.093042687396519e-05\n",
      "2021-11-08 09:48:40 fostool/tools/trainer.py 129 \\ - INFO - On epoch 55, train loss 0.0001669648015443024, val loss 0.0018853017827495933\n",
      "2021-11-08 09:48:40 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 56, train loss 0.00029076225341255355, val loss 4.6543376811314374e-05\n",
      "2021-11-08 09:48:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:41 fostool/tools/trainer.py 129 \\ - INFO - On epoch 57, train loss 0.00017068911587226796, val loss 0.00010327123163733631\n",
      "2021-11-08 09:48:41 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:42 fostool/tools/trainer.py 129 \\ - INFO - On epoch 58, train loss 9.775686257026709e-05, val loss 0.0006933094700798392\n",
      "2021-11-08 09:48:42 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 59, train loss 9.489039803156629e-05, val loss 9.830175986280665e-05\n",
      "2021-11-08 09:48:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:43 fostool/tools/trainer.py 129 \\ - INFO - On epoch 60, train loss 6.709200963748366e-05, val loss 6.28587367828004e-05\n",
      "2021-11-08 09:48:43 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:44 fostool/tools/trainer.py 129 \\ - INFO - On epoch 61, train loss 5.487550466072703e-05, val loss 5.290257468004711e-05\n",
      "2021-11-08 09:48:44 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:44 fostool/tools/trainer.py 129 \\ - INFO - On epoch 62, train loss 5.1449000073427506e-05, val loss 0.00019279024854768068\n",
      "2021-11-08 09:48:44 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:45 fostool/tools/trainer.py 129 \\ - INFO - On epoch 63, train loss 7.641949427621016e-05, val loss 0.0001622987474547699\n",
      "2021-11-08 09:48:45 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 64, train loss 0.00016551330058560282, val loss 0.0017428372520953417\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:48:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 0, train loss 0.7922525189139626, val loss 0.23837490379810333\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.23837490379810333\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 1, train loss 0.0825420089743354, val loss 0.029391298070549965\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.029391298070549965\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 2, train loss 0.02834954248233275, val loss 0.02842204086482525\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.02842204086482525\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 129 \\ - INFO - On epoch 3, train loss 0.00880178311755034, val loss 0.00379580887965858\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:46 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00379580887965858\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 4, train loss 0.003888769858432087, val loss 0.002156055299565196\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.002156055299565196\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 5, train loss 0.0014790475622496822, val loss 0.0025524012744426727\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 6, train loss 0.0010514258015477521, val loss 0.0010918407933786511\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.0010918407933786511\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 7, train loss 0.0007028050921772691, val loss 0.0012655649334192276\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 8, train loss 0.0006031481157564981, val loss 0.0006555297295562923\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.0006555297295562923\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 129 \\ - INFO - On epoch 9, train loss 0.0005369823272551664, val loss 0.001078964676707983\n",
      "2021-11-08 09:48:47 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 10, train loss 0.00048799667274579406, val loss 0.0008770423009991646\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 11, train loss 0.0004283228719776327, val loss 0.0006999995675869286\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 12, train loss 0.00038931631239723754, val loss 0.0006494779954664409\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.0006494779954664409\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 13, train loss 0.00034198704419064927, val loss 0.0006490381201729178\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.0006490381201729178\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 14, train loss 0.00032664015783335674, val loss 0.0004642631975002587\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.0004642631975002587\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 129 \\ - INFO - On epoch 15, train loss 0.0003232942227358845, val loss 0.00044607763993553817\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:48 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00044607763993553817\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 16, train loss 0.00028874726029409265, val loss 0.0004939411301165819\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 17, train loss 0.0002717102443884042, val loss 0.0004649010661523789\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 18, train loss 0.0002436754690610211, val loss 0.00039620205643586814\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00039620205643586814\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 19, train loss 0.0002512662017993121, val loss 0.00038516949280165136\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00038516949280165136\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 20, train loss 0.00024054989229295063, val loss 0.0006664018146693707\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 129 \\ - INFO - On epoch 21, train loss 0.00023223204929804936, val loss 0.000408177322242409\n",
      "2021-11-08 09:48:49 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 22, train loss 0.0002130908429866064, val loss 0.00032212346559390426\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00032212346559390426\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 23, train loss 0.00021231655872807923, val loss 0.0006261657690629363\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 24, train loss 0.00019784677715506405, val loss 0.0004112246388103813\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 25, train loss 0.00016166117711691186, val loss 0.00027113532996736467\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00027113532996736467\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 26, train loss 0.00015413329509266822, val loss 0.00028117751935496926\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 27, train loss 0.00015916063355027953, val loss 0.00029911534511484206\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 129 \\ - INFO - On epoch 28, train loss 0.00014861929891842672, val loss 0.00021288241259753704\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:50 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00021288241259753704\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:48:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 29, train loss 0.00015751423713729972, val loss 0.0002688805980142206\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 30, train loss 0.00015941146557452157, val loss 0.00042496295645833015\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 31, train loss 0.00013547559303168038, val loss 0.0001299165014643222\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.0001299165014643222\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 32, train loss 0.00013092077609723094, val loss 0.00011889038432855159\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 137 \\ - INFO - For model MLP_Res_3809_30, current best val loss 0.00011889038432855159\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 33, train loss 0.0001253138470929116, val loss 0.00012621689529623836\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 129 \\ - INFO - On epoch 34, train loss 0.00011908425155773081, val loss 0.0002358182828174904\n",
      "2021-11-08 09:48:51 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 35, train loss 0.00011506783895046365, val loss 0.0001539228978799656\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 36, train loss 0.00011035316856577992, val loss 0.00022238025849219412\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 37, train loss 0.00010845678810834546, val loss 0.00020282207697164267\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 38, train loss 0.00010350013921693476, val loss 0.00014172785449773073\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 39, train loss 0.00011620560623917051, val loss 0.0001800817990442738\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 129 \\ - INFO - On epoch 40, train loss 0.00011609913185979663, val loss 0.00016487303946632892\n",
      "2021-11-08 09:48:52 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:53 fostool/tools/trainer.py 129 \\ - INFO - On epoch 41, train loss 0.00010675272047096355, val loss 0.00012682324449997395\n",
      "2021-11-08 09:48:53 fostool/tools/trainer.py 130 \\ - INFO - ------------\n",
      "2021-11-08 09:48:53 fostool/tools/trainer.py 129 \\ - INFO - On epoch 42, train loss 0.00013146216224413365, val loss 0.00025093505973927677\n",
      "2021-11-08 09:48:53 fostool/tools/trainer.py 130 \\ - INFO - ------------\n"
     ]
    }
   ],
   "source": [
    "#fit in one line\n",
    "fost.fit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "2021-11-08 09:48:53 fostool/task/fusion.py 67 \\ - INFO -    val_loss             model_name\n",
      "0  0.000035      KRNNModel_290a_10\n",
      "1  0.000038      KRNNModel_3bf8_20\n",
      "2  0.000005      KRNNModel_d82f_30\n",
      "7  0.000031  SandwichModel_3f7a_30\n"
     ]
    }
   ],
   "source": [
    "#get predict result\n",
    "res = fost.predict()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsgAAAG4CAYAAABYYREqAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzde1zW9f3/8ccFCIh4ABSVQwqiJKggYKmleUgtLUrT1K3SWblara12amvZaS2331b7ltuas5WtlWfTlVpamVbzgIh4Fo9xcVAUREWOF9fvj2syzUOoXNf7Ojzvt1s34bo+F5/nGxJevnm/3y+L3W63IyIiIiIiAPiZDiAiIiIi4k5UIIuIiIiInEUFsoiIiIjIWVQgi4iIiIicRQWyiIiIiMhZVCCLiIiIiJxFBbKIiJtYvXo1MTExpmM0iW+OJTk5mdWrV5sLJCJyGVQgi4g0odLSUkaPHk2LFi3o1KkT7777rlPu89Zbb3HjjTc65WM7w/bt2xk0aNC3XmexWNi7d6/zA4mIXEKA6QAiIt7kkUceITAwkMOHD5OTk8OoUaNISUkhOTnZdLSrYrPZ8Pf3Nx1DRMQlNIMsItJEKioqWLhwIS+88AKhoaHceOONZGZm8s9//vOC11dWVjJ58mTCwsJISkpi48aN5zw/ffp0unTpQsuWLUlKSmLx4sUA7Ny5k4ceeoj//Oc/hIaG0qZNGwA+/PBDevfuTatWrYiNjeXZZ5+9aNYzSyB++9vf0rZtWzp37sy//vWvhucnT57Mww8/zMiRI2nRogWfffYZhYWF3HXXXbRr1464uDheffXVRo+lc+fOrFq1CnAU27/97W8bxpaenk5+fj4DBw4EICUlhdDQUObOndvIz7yISNPSDLKISBPZs2cPAQEBdOvWreGxlJQUPv/88wte/9xzz7Fv3z727dtHRUUFt9566znPd+nShbVr19KhQwfmz5/PPffcw969e+nevTuvv/46s2bN4osvvmi4vkWLFrz99tskJyezbds2hg0bRmpqKnfeeecF719cXMzRo0cpKChg3bp1jBw5koyMDBITEwF49913WbZsGR988AFVVVUMGDCAO+64g/feew+r1crNN99MYmIiI0aM+NaxnO3ll1/mvffeY9myZXTr1o3c3FxCQkJYs2YNFouFLVu2kJCQ0OjPu4hIU9MMsohIEzl16hStWrU657HWrVtz8uTJC14/b948nnrqKcLDw4mNjeWxxx475/lx48YRFRWFn58f48ePp2vXrmzYsOGi9x80aBA9e/bEz8+PXr16MXHixIsW52e88MILBAUFcdNNNzFq1CjmzZvX8Nwdd9zBDTfcgJ+fH1u3bqWkpIRp06YRGBhIfHw8Dz74IHPmzGnUWM42a9YsfvOb35CYmIjFYiElJYWIiIhL5hQRcSXNIIuINJHQ0FBOnDhxzmMnTpygZcuWF7y+sLCQ2NjYhvc7dep0zvNvv/02L7/8MgcPHgQcBfjRo0cvev/169fz5JNPsm3bNmpqaqiurmbcuHEXvT4sLIwWLVqcc//CwsKG98/OdujQIQoLCxuWc4BjqcSAAQMaNZaz5efn06VLl4s+LyJimmaQRUSaSLdu3airqyMvL6/hsS1btlx0g17Hjh3Jz89veP/rr79uePvQoUM8+OCDzJgxg2PHjnH8+HF69OiB3W4HHKc9fNN3vvMdMjMzyc/Pp7y8nIceeqjh+gspKyujoqLinPtHRUU1vH/2PWJjY4mLi+P48eMN/508eZJly5Z961i+KTY2ln379l30eRER01Qgi4g0kRYtWjBmzBimTZtGRUUFX375JUuWLOHee++94PV33303L730EmVlZVitVl577bWG5yoqKrBYLLRr1w6AN998k23btjU83759e6xWKzU1NQ2PnTx5kvDwcIKDg9mwYUOjjph75plnqKmpYe3atXzwwQcXnXG+7rrraNmyJb/73e+orKzEZrOxbdu2hs14lxrLNz3wwAM8/fTT5OXlYbfbyc3N5dixYw3j2r9//7fmFhFxJhXIIiJN6C9/+QuVlZVERkYyceJE/vrXv150BvmZZ56hU6dOxMXFMXz48HMK6aSkJH7yk5/Qr18/2rdvz9atW7nhhhsanh8yZAjJycl06NCBtm3bNtx72rRptGzZkueff5677777klk7dOhAWFgYUVFRfPe73+X111/n2muvveC1/v7+fPDBB+Tk5BAXF0fbtm154IEHKC8v/9axfNMTTzzB3XffzfDhw2nVqhX3338/lZWVADz77LNMmjSJNm3anLMeWkTElSz2S/3+TUREvNLq1au55557sFqtpqOIiLgdzSCLiIiIiJxFBbKIiIiIyFm0xEJERERE5CyaQRYREREROYtPNQpp27YtnTt3duk9a2tradasmUvv6Q40bt+icfsWjdt3+OKYQeP2JQcPHrxgAyafKpA7d+5MVlaWS+9ZWFh4zsH7vkLj9i0at2/RuH2HL44ZNG5fkpGRccHHtcRCREREROQsKpBFRERERM6iAllERERE5Cw+tQZZRERExJvV1tZitVqpqqq67NfabLaG9vHeJjg4mJiYmEZvQlSBLCIiIuIlrFYrLVu2pHPnzlgslst6bU1NDYGBgU5KZo7dbufYsWNYrVbi4uIa9RotsRARERHxElVVVURERFx2cezNLBYLERERlzWrrgJZRERExIuoOD7f5X5OVCCLiIiIiJxFBbKIiIiINIljx46RmppKamoqHTp0IDo6uuH9mpqaS742KyuLxx57zEVJL02b9ERERESkSURERJCTkwPAs88+S2hoKD/96U8bnq+rqyMg4MLlZ0ZGxkU727maZpBFRERExGkmT57MQw89xPXXX8/Pf/5zNmzYQL9+/ejduzf9+/dn9+7dAKxevZrbbrsNcBTXU6ZMYdCgQcTHx/Pqq6+6NLNmkEVERES80HP/3s6OwhONvt5ut3/rZrakqFY8c3vyZWexWq189dVX+Pv7c+LECdauXUtAQACrVq3iV7/6FQsXLjzvNbt27eKzzz7j5MmTJCYm8vDDDzf6HOOrZXQGecqUKURGRtKjR48LPm+323nsscdISEigV69eZGdnNzw3e/ZsunbtSteuXZk9e7arIouIiIjIZRo3bhz+/v4AlJeXM27cOHr06MHjjz/O9u3bL/iaUaNGERQURNu2bYmMjOTw4cMuy2t0Bnny5Mk8+uij3HfffRd8fvny5eTl5ZGXl8f69et5+OGHWb9+PaWlpTz33HNkZWVhsVhIT08nMzOTsLAwF49ARERExD1d7kyvMxuFtGjRouHtp59+msGDB7N48WIOHjzIoEGDLviaoKCghrf9/f2pq6tzSrYLMTqDPHDgQMLDwy/6/JIlS7jvvvuwWCz07duX48ePU1RUxEcffcSwYcMIDw8nLCyMYcOGsWLFChcmFxFfV1Vrw263m44hIuJxysvLiY6OBuCtt94yG+Yi3HqTXkFBAbGxsQ3vx8TEUFBQcNHHRURcYfnWIvr8ZhX3z93DVmu56TgiIh7l5z//Ob/85S/p3bu3S2eFL4fXb9KbOXMmM2fOBKC4uJjCwkKX3r+kpMSl93MXGrdv8ZVx19rqmfFFIfO3lJDYrjmHT1Rxx5+/YEzPtkztF0VokL/piC7hK1/vb/LFcfvimMGzx22z2b71vOGLaepi9Ve/+tU575/JlZ6ezrZt2xoenzZtGjU1NfTv359FixZRU1PT8NozrzmzD+1KxwaOz01j60C3LpCjo6PJz89veN9qtRIdHU10dDSrV68+5/GLrV+ZOnUqU6dOBRzn60VFRTkz8gWZuKc70Lh9i7ePO7/0NI+9m80WazlTbojjyVuv5WB+Af/KLeef6w7x+YGT/HpUdzJTonyizau3f70vxhfH7YtjBs8dd3l5+VWtI3bWGmR34O/v3+ivq1svscjMzOTtt9/Gbrezbt06WrduTceOHRkxYgQff/wxZWVllJWV8fHHHzNixAjTcUXES63ccZhRr65l/9EKXr8nnWm3JxEY4EdokD/P3dGDJY/cSMfWwfxoTg73vLGe/SWnTEcWEZGrYHQGeeLEiaxevZqjR48SExPDc889R21tLQAPPfQQI0eOZNmyZSQkJBASEsKbb74JQHh4OE8//TR9+vQBHFPzl9rsJyJyJWpt9fx+xS7+vvYAPaJb8ZfvpHNNRMh51/WMac3iH9zAu+sP8fuPdnPLn9by0E3x/GBwAsHNfGPZhYiINzFaIL/33nuXfN5isfDnP//5gs9NmTKFKVOmOCOWiAiFxyt59N1ssr8+zr19O/HUqO6XLHb9/Szc268zI3p04Lcf7uTVT/eyZEshz2UmMygx0oXJRUTkarn1EgsRERM+232EUa+uZc/hU7w2sTcv3Nmj0TPBkS2D+dOE3rz7wPX4+1mY/OZGfvCvTRSXVzk5tYiINBUVyCIi/1Vnq+d3K3bxvTc30r5VMEsfvYHbU65so07/hLYs/9EAfjq8G5/sPMLQP65m1tr91Nnqmzi1iIg0NRXIIiLA4RNVfGfWev66eh8Tr4vl/UduIL5d6FV9zKAAfx4d0pWVj9/EdXHh/ObDndw+40s2HSprotQiIu7H39+f1NRUevTowbhx4zh9+vQVf6zJkyezYMECAB544AF27Nhx0WtXr17NV199dcX3OpsKZBHxeWvzShj5f2vZai3nlfEpvDSmV5NurrsmIoR/TO7D6/ekcfx0DXf99St+uSiX46ev/DxPERF31bx5c3Jycti2bRuBgYG8/vrr5zx/pectz5o1i6SkpIs+rwJZRKQJ2OrtvLxyD/f9YwMRoYH8+4c3MLp3jFPuZbFYuKVHR1Y9cRMPDohjXpaVIX/8nPlZ+WpZLSJea8CAAezdu5fVq1czYMAAMjMzSUpKwmaz8bOf/Yw+ffrQq1cv/va3vwFgt9t59NFHSUxM5Oabb+bIkSMNH2vQoEFkZWUBsGLFCtLS0khJSWHo0KEcPHiQ119/nVdeeYXU1FTWrl17VbndulGIiIizHDlZxY/n5PDVvmOMTY/h+TuSCQl0/rfEFkEBPDUqiTFpMfz6/W38bEEu87Os/GZ0D7q1b+n0+4uID1n+JBRvbfTlAfZ6sHzL3GmHnnDr9EZ9vLq6OpYvX84tt9wCOLrhbdu2jbi4OGbOnEnr1q3ZuHEj1dXV3HDDDQwfPpzNmzeze/duduzYweHDh0lKSjrv1LKSkhIefPBB1qxZQ1xcHKWlpYSHh/PQQw8RGhrKT3/600aP+WJUIIuIz/nPvmM8NmczJ6tq+f3YXtydEevyDN07tmL+9/sxf1M+Ly3fxcj/W8v9A+L40dCuLinURUScpbKyktTUVMAxg3z//ffz1Vdfcd111xEXFwfAxx9/TG5ubsP64vLycvLy8lizZg0TJ05s6Ho3ZMiQ8z7+unXrGDhwYMPHckYvDH0XFhGfUV9v5y+r9/Lyyj10btuCd+6/nsQO5mZt/fwsjO9zDcOSOjB9+U7+9vl+PthSxDO3JzE8uYOxXCLiJRo503tGXU1Nk7SaPrMG+ZtatGjR8Lbdbue11147rxPysmXLrvr+TUFrkEXEJxw7Vc3ktzbyh4/3cHtKFP9+9EajxfHZwlsE8vuxKcx/qB+hQQFM/ecmHpi9kfzSK9/5LSLizkaMGMFf//rXhg7Ke/bsoaKigoEDBzJ37lxsNhtFRUV89tln5722b9++rFmzhgMHDgBQWloKQMuWLTl58mST5FOBLCJeb+PBUka9+gXr9h/jt6N78qfxqbQIcr9foPXpHM4Hj93Ir0Zey1f7jjHslc/5y+q91NTp7GQR8S4PPPAASUlJpKWl0aNHD77//e9TV1fH6NGj6dq1K0lJSdx3333069fvvNe2a9eOmTNnMmbMGFJSUhg/fjwAt99+O4sXL26STXoWuw9tn87IyGjY/egqhYWFREVdWaMBT6Zx+xZ3HXd9vZ2Za/fz/z7aTWxYc2Z8J40e0a2b7OM7c9yFxyt57t/b+Wj7YbpGhvLCnT3oGx/hlHtdLnf9ejubL47bF8cMnj3unTt30r179yt6bU0TLbFwVxf63FysNtQMsoh4pbKKGh54O4vpy3cxIrk9S394Y5MWx84W1aY5f7s3gzcmZVBZa2PCzHU8MS+Ho6eqTUcTEfF67vc7RhGRq5T9dRk/fHczR05W8VxmMvf164TFYjEd64oM7d6e/l3aMuOzPGau2c8nO4/w3MBQMq9Pwi+kjel4IiJeSTPIIuI17HY7s9bu5+7X/4PFAgsf7s+k/p09tjg+o3mgPz8bcS3LfzSAvpG13Lo6k3XvTDMdS0TclA+tnm20y/2cqEAWEa9QXlnLQ+9s4jcf7mTwtZF8+MMB9IrxrhnWhMiWvP7QSI7EDKPvkblwosh0JBFxM8HBwRw7dkxF8lnsdjvHjh0jODi40a/REgsR8Xi51uM88m42Rcer+PWo7tx/Y5zHzxpfjMViIfauF2FGH/j8d3D7n0xHEhE3EhMTg9VqpaSk5LJfa7PZ8Pf3d0Iq84KDg4mJiWn09SqQRcRj2e12/rnuEL/5YCdtQwOZ91A/0q4JMx3L+cLjIf17kPUP6PcotE0wnUhE3ESzZs0aOsxdLk8+vaOpaYmFiHisXyzMZdqS7dzYtS0fPjbAN4rjM276OQQEw6cvmE4iIuJ1VCCLiEf6z75jzMuy8uCAOGbdl0FYC+89u/OCQiOh3yOw430oyDadRkTEq6hAFhGPY7fbeXnlbtq3CuInwxPx8/PO9cbfqv8PISQCVj1rOomIiFdRgSwiHmdN3lE2Hizj0SFdCW7mnRtKGiW4FQz4KRz4HPZ9ajqNiIjXUIEsIh7Fbrfzx493ExPWnPEZsabjmNfnfmh9jWMWub7edBoREa+gAllEPMrKHYfJtZbzo6FdCQzQtzACgmDIU1C0BXYsNp1GRMQr6KeLiHiM+no7L6/cQ3zbFozuHW06jvvoOQ4ik+GTF6CuxnQaERGPpwJZRDzGh1uL2FV8kh8P60aAv759NfDzh5ufgbIDkD3bdBoREY+nnzAi4hHqbPW8snIPie1bclvPjqbjuJ+uw+Ga/vD576H6lOk0IiIeTQWyiHiExZsL2H+0gieGd/PdY90uxWKBYc9BxRFY91fTaUREPJoKZBFxezV19fzfJ3n0jG7N8KT2puO4r9jrIHEUfPl/UHHMdBoREY+lAllE3N68rHysZZX8ZHg3LBbNHl/S0GlQWwFr/2g6iYiIx1KBLCJurarWxmuf5pHRKYyburUzHcf9RV4LKd+BjX+H41+bTiMi4pFUIIuIW/vX+q85fKKanwxP1OxxYw3+JWCBz14ynURExCOpQBYRt1VRXcdfV+/lhoQI+nWJMB3Hc7SOgeunwpb34PAO02lERDyOCmQRcVuz/3OQo6dqeGJYoukonufGJyCoFXzyvOkkIiIeRwWyiLilE1W1/O3z/Qy5NpL0TmGm43iekHC48UewZzkc+o/pNCIiHkUFsoi4pTfWHqC8spYnhnUzHcVzXf8whHaAVc+A3W46jYiIxzBaIK9YsYLExEQSEhKYPn36ec8//vjjpKamkpqaSrdu3WjTpk3Dc/7+/g3PZWZmujK2iDhZWUUNb3xxgFt7dKBHdGvTcTxXYAgM+gXkr4fdy02nERHxGAGmbmyz2XjkkUdYuXIlMTEx9OnTh8zMTJKSkhqueeWVVxrefu2119i8eXPD+82bNycnJ8elmUXENf62Zj8VNXU8rtnjq9f7XvhqhmMtcrcR4OdvOpGIiNszNoO8YcMGEhISiI+PJzAwkAkTJrBkyZKLXv/ee+8xceJEFyYUEROOnKzira8OcEdKFN3atzQdx/P5N4OhT0PJTtgyx3QaERGPYGwGuaCggNjY2Ib3Y2JiWL9+/QWvPXToEAcOHGDIkCENj1VVVZGRkUFAQABPPvkkd9555wVfO3PmTGbOnAlAcXExhYWFTTiKb1dSUuLS+7kLjdu3NOW4/7TGSm1dPRN7tXb539fL5TFf7zbX0bZdD/xWvcCRiP4QEHRVH85jxt3EfHHcvjhm0LjFYIF8OebMmcPYsWPx9//frwYPHTpEdHQ0+/fvZ8iQIfTs2ZMuXbqc99qpU6cydepUADIyMoiKinJZ7jNM3NMdaNy+pSnGXXi8kve3bmFseizXJ8U3QSrn85iv962/hbczibJ+CP0fveoP5zHjbmK+OG5fHDNo3L7O2BKL6Oho8vPzG963Wq1ER0df8No5c+act7zizLXx8fEMGjTonPXJIuKZZny2Fzt2fjg0wXQU7xN/E3QZAmv/AFXlptOIiLg1YwVynz59yMvL48CBA9TU1DBnzpwLnkaxa9cuysrK6NevX8NjZWVlVFdXA3D06FG+/PLLczb3iYjn+frYaeZtzGfiddcQExZiOo53uvlZqCyDL181nURExK0ZK5ADAgKYMWMGI0aMoHv37tx9990kJyczbdo0li5d2nDdnDlzmDBhAhaLpeGxnTt3kpGRQUpKCoMHD+bJJ59UgSzi4f7vkzz8/Sw8Mlizx07TMQV63AXr/gIni02nERFxW0bXII8cOZKRI0ee89jzz5/bFvXZZ58973X9+/dn69atzowmIi6098gpFm+2cv+NcbRvFWw6jncb/BTsWAKf/w5ue+XbrxcR8UHqpCcixv1p1R6Cm/nz0E3nb7SVJhbRBdInw6bZcGyf6TQiIm5JBbKIGLWz6AQf5BYx5YY4IkKv7vgxaaSBP3cc9fbpC6aTiIi4JRXIImLUyyv30DI4gAcHeMaxbl6hZXvo9whsXwyFOgFIROSbVCCLiDFb8o+zcsdhpg6Ip3VIM9NxfEv/x6B5OKx61nQSEfF1NRVgqzWd4hwqkEXEmD+u3ENYSDO+d2Oc6Si+J7gVDPwp7F8N+z4znUZEfNlXr8GfekH1KdNJGqhAFhEjNhwoZc2eEh4e1IXQII9o6ul9+jwAra9xzCLX15tOIyK+yFYLWW9Chx4QFGo6TQMVyCLicna7nT98vJt2LYO4t29n03F8V0AQDP4VFOXAjvdNpxERX7TrQzhV7PgHuxtRgSwiLvfl3mNsOFDKo4MTaB7obzqOb+t1N0QmOU60cLM1gCLiAzbOgjbXQMLNppOcQwWyiLjUmdnjqNbBTLgu1nQc8fOHoc9A6X7Inm06jYj4kpLdcHAtZExxfC9yIyqQRcSlPt11hJz84zw2tCtBAe71DdFndRsB1/SDz3/v2E0uIuIKG98A/0Dofa/pJOdRgSwiLlNfb+ePH++hU0QId6XHmI4jZ1gscPNzcOowrPuL6TQi4guqT8GW9yB5NLRoazrNeVQgi4jLrNhezI6iE/z45q4089e3H7dyzfWQOBK+fBVOl5pOIyLebut8qD7hdpvzztBPKBFxCVu9nZdX7iEhMpTMlGjTceRChk6DmlOw9o+mk4iIN7PbHZvzOvSEmD6m01yQCmQRcYmlWwrYe+QUTwzrhr+fxXQcuZDI7pAyETbMhOP5ptOIiLfK3wCHtzlmjy3u+fNABbKIOF2trZ4/rcojqWMrbknuYDqOXMqgXwIWWP2S6SQi4q02zoKgVtBznOkkF6UCWUScbuEmK4eOneYnw7vhp9lj99YmFq570LF55shO02lExNucKnE0Jkr9DgS2MJ3molQgi4hTVdfZePWTPFJj2zDk2kjTcaQxBvwEAkPhk+dNJxERb7P5n2CrgYz7TSe5JBXIIuJUczbkU1hexU+HJ2Jx07Vm8g0h4XDDj2D3Mvh6nek0IuIt6m2Q9SbEDYR23UynuSQVyCLiNJU1NmZ8tpfr48K5ISHCdBy5HH0fhtD2sPIZx45zEZGrlbcSyr9226PdzqYCWUSc5p/rDlJyspqfaPbY8wS2gJt+AfnrYM8K02lExBtsnAUtOzrOXHdzKpBFxClOVdfx19X7GNitHdfFhZuOI1ci7T4I7wKrnnP8alRE5EqV7oe9qyB9Mvg3M53mW6lAFhGnePOLA5SdruUnw9x7nZlcgn8zGPJrKNkJuXNNpxERT5b1Jlj8IG2S6SSNogJZRJpc+elaZq7dz7Ck9qTEtjEdR65G0p3QMRU++y3UVplOIyKeqLbScXpF99ugVUfTaRpFBbKINLmZa/dxsqqOJzR77Pn8/GDYc1CeD1lvmE4jIp5o+/tQWeYRm/POUIEsIk3q6Klq3vzyILf16kj3jq1Mx5GmED8I4gfDmj9AVbnpNCLiaTbOgrbdoPMA00kaTQWyiDSp11fvo6rWxo9v1uyxV7n5Wagsha9eM51ERDxJ4WYoyHLMHnvQaUYqkEWkyRSXV/HPdYcY3TuGhMhQ03GkKUWlQvIY+M+f8TtdYjqNiHiKjW9AsxBImWA6yWVRgSwiTebPn+3FVm/nxzd3NR1FnGHIr6Guihbb/mk6iYh4gsoy2LoAet0Nwa1Np7ksKpBFpEnkl55mzsavGd8nltjwENNxxBkiukDXEYTsXgy2WtNpRMTd5bwHdZWQcb/pJJdNBbKINInXPs3DYrHw6JAE01HEmdIn4V95VN31ROTS6usdm/Nir4eOvUynuWwqkEXkqn1dVsXC7ALuub4THVs3Nx1HnClhGLaQSNg023QSEXFnBz6H0n0edbTb2VQgi8hV+8eGYgL9/Xh4UBfTUcTZ/AM4nTjG0TL2eL7pNCLirjbOgpAISLrDdJIrogJZRK7K7uKTrNxdxuQbOtOuZZDpOOICp68d63hj8ztmg4iIeyovgN3LIO0+CPDMnwsqkEXkqvxp1R5CAv34/sB401HERWwto6HLYEeBXG8zHUdE3M2mt8Buh/TvmU5yxYwWyCtWrCAxMZGEhASmT59+3vNvvfUW7dq1IzU1ldTUVGbNmtXw3OzZs+natStdu3Zl9mythRMx4ciJKj7aXszonm1pExJoOo64UtokOGGFvZ+YTiIi7qSuBrJnQ7cRENbJdJorFmDqxjabjUceeYSVK1cSExNDnz59yMzMJCkp6Zzrxo8fz4wZM855rLS0lOeee46srCwsFgvp6elkZmYSFhbmyiGI+LxFmwuot8NtSRGmo4irJY6EkLb//UE43HQaEXEXuz6AU4c9dnPeGcZmkDds2EBCQgLx8fEEBjtwLX4AACAASURBVAYyYcIElixZ0qjXfvTRRwwbNozw8HDCwsIYNmwYK1boyCERV7Lb7czPyiejUxjXhAWbjiOuFhAIqd+B3cvhZLHpNCLiLjbOgjadoMtQ00muirEZ5IKCAmJjYxvej4mJYf369eddt3DhQtasWUO3bt145ZVXiI2NveBrCwoKLnifmTNnMnPmTACKi4spLCxs4pFcWkmJb7Zk1bi93/biCvaVVPDkkHCfGvfZfH3c/jG30N7+KifWvM6p3lMNp3I+X/x6++KYQeO+UgGle4g89CXl1/+UimLP/oezsQK5MW6//XYmTpxIUFAQf/vb35g0aRKffvrpZX2MqVOnMnWq4xt3RkYGUVFRzoh6SSbu6Q40bu82Y/1Wgpv58d2B3TlZWuIz4/4mnx53VBR0upFWexfT6tZp4Of9+7598evti2MGjfuKbP4j+AfReuAPaN3Cs5feGftuFh0dTX7+/87QtFqtREdHn3NNREQEQUGO40EeeOABNm3a1OjXiojzVNXa+PeWQkb26EjL4Gam44hJ6ZOg7CAcXGM6iYiYVH0StsyBHmPAw4tjMFgg9+nTh7y8PA4cOEBNTQ1z5swhMzPznGuKiooa3l66dCndu3cHYMSIEXz88ceUlZVRVlbGxx9/zIgRI1yaX8SXfbS9mJNVdYxNjzEdRUzrngnBbdRZT8TX5c6FmlMevznvDGNLLAICApgxYwYjRozAZrMxZcoUkpOTmTZtGhkZGWRmZvLqq6+ydOlSAgICCA8P56233gIgPDycp59+mj59+gAwbdo0wsPDTQ1FxOcs2GQlJqw5feM9f5ZArlKzYEiZAFn/gIpjXjFzJCKXyW6HjW9AxxSITjedpkkYXYM8cuRIRo4cec5jzz//fMPbL730Ei+99NIFXztlyhSmTJni1Hwicr6C45V8sfcojw3pip+fxXQccQdpk2D967DlPej/qOk0IuJqX/8HjuyAzNfA4h0/F7x/R4WINKnF2VbsdrS8Qv6nfRLE9HGciWy3m04jIq62cRYEt4YeY00naTIqkEWk0ex2Ows2WekbH05seIjpOOJO0ibB0T3w9TrTSUTElU4ehh1LIfUeCPSenwsqkEWk0TYeLOPgsdOMS4/99ovFt/QYA4EtHbPIIuI7Nr8N9bWQ4V3LXlUgi0ijLdiUT4tAf27t2cF0FHE3gS2g51jY/j5UHjedRkRcwVYHWW9B/GBom2A6TZNSgSwijXK6po4Pc4sY1asjIYFu3WNITEmfBHWVsHW+6SQi4gp5H8EJq9cc7XY2Fcgi0ijLthZTUWNjXIaWV8hFRPWGDr20WU/EV2ycBa2iodstppM0ORXIItIoCzbl0zkihIxOYaajiDtLnwTFW6Fws+kkIuJMx/bBvk8h/Xvg732/VVSBLCLf6utjp1m3v5Sx6TFYvOSMS3GSnuOgWYg264l4u6x/gF8ApN1nOolTqEAWkW+1INuKxQJj0nT2sXyL4NaQPBq2LoDqU6bTiIgz1JyGze84Ws23bG86jVOoQBaRS6qvt7Nwk5UbE9oS1aa56TjiCdImQc0p2L7IdBIRcYbti6DquFduzjtDBbKIXNK6/ccoOF6pznnSeLHXQbtrYZOWWYh4pY2zoF136NTfdBKnUYEsIpc0f5OVlsEBjEjW2cfSSBaLYxa5IAsObzedRkSaUsEmxybcPvc7/q57KRXIInJRJ6tqWb6tiMyUKIKb+ZuOI54kZQL4B2oWWcTbbHwDAkOh13jTSZxKBbKIXNSHuUVU1dZreYVcvpBwxwae3DlQW2k6jYg0hdOlsG2hozgObmU6jVOpQBaRi5q/yUpCZCipsW1MRxFPlD4Jqsphx1LTSUSkKeT8C+qqHMsrvJwKZBG5oP0lp9h0qIxxOvtYrlTnARAerzORRbxBfb1jecU1/aF9suk0TqcCWUQuaMEmK/5+Fkb3jjYdRTyVxeJoInDoSziaZzqNiFyN/Z9C2QGfmD0GFcgicgG2ejuLsgu4qVs7IlsFm44jniz1u45uW5pFFvFsG9+AFu0cewt8gApkETnPF3uPUnyiinHanCdXKzQSEm+FnPegrsZ0GhG5Ese/hj0rHMc3BgSaTuMSKpBF5Dzzs/JpE9KMId0jTUcRb5A2GU4fhd0fmk4iIldi01uOP9Mnm0zhUiqQReQc5adr+XjHYe5MjSYoQGcfSxPoMhhax+pMZBFPVFcN2W9Dt1uhTazpNC6jAllEzrE0t5CaOp19LE3Izx963wv7P4Oyg6bTiMjl2PlvqCjxmc15Z6hAFpFzLMjK59oOLUmO8u5D4MXFet8DFj/I/qfpJCJyOTbOchzXGD/YdBKXUoEsIg32HD7JFms54zJidfaxNK3W0ZAwzNFowFZnOo2INEbxNvj6P5BxP/j5VsnoW6MVkUtasMlKgJ+FO1OjTEcRb5Q+CU4WQd7HppOISGNsnAUBwZD6HdNJXE4FsogAUGurZ1F2AUOujSQiNMh0HPFGXUdAaAediSziCarKIXce9BgLIeGm07icCmQRAeDz3SUcPVXNuAzf2aUsLuYfAL2/65hBLi8wnUZELmXLXKit8LnNeWeoQBYRwLG8om1oIIMS25mOIt6s971gr3esRRYR92S3O5ZXRKVBdJrpNEaoQBYRSitq+GSX4+zjZv76tiBOFB4H8YMcp1nU15tOIyIXcvALOLob+jxgOokx+kkoIry/uYBam13LK8Q10iZB+dew/1PTSUTkQjbOguA20GOM6STGqEAWERZsstIrpjWJHVqajiK+4NpREBKhznoi7uhEEez6wHF2ebPmptMYowJZxMdtLyxnR9EJdc4T1wkIgpSJsHsZnDpiOo2InC37baivg4wpppMYpQJZxMfNz7IS6O9HZorOPhYXSpvk+CGc867pJCJyRn0tbHoTugyFiC6m0xilAlnEh9XU1bMkp4Bhye1pExJoOo74knbd4Jr+jtkqu910GhEBgg995mjm48Ob884wWiCvWLGCxMREEhISmD59+nnPv/zyyyQlJdGrVy+GDh3KoUOHGp7z9/cnNTWV1NRUMjMzXRlbxGt8uuswZadrtbxCzEifBKX7HDvmRcS4Fjveg9ax0G2E6SjGGSuQbTYbjzzyCMuXL2fHjh2899577Nix45xrevfuTVZWFrm5uYwdO5af//znDc81b96cnJwccnJyWLp0qavji3iF+VlW2rcKYmBXnX0sBiTdAcGt1VlPxB2U7CGoYB2kTwY/f9NpjDNWIG/YsIGEhATi4+MJDAxkwoQJLFmy5JxrBg8eTEhICAB9+/bFarWaiCrilY6crGL1nhLGpMXg72cxHUd8UbPm0Gs87FgKp0tNpxHxbdmzsfs1g7T7TCdxCwGmblxQUEBs7P/OXI2JiWH9+vUXvf6NN97g1ltvbXi/qqqKjIwMAgICePLJJ7nzzjsv+LqZM2cyc+ZMAIqLiyksLGyiETROSUmJS+/nLjRu9/du9mFs9XYGxgZe9d8LTxp3U9K4r15A7EgiN8ykfO1MKnq69w9mX/x6++KYwQfHXW+j/Za5nGp/PRUn6uCEa2sld2SsQL4c77zzDllZWXz++ecNjx06dIjo6Gj279/PkCFD6NmzJ126nL/jcurUqUydOhWAjIwMoqJcv1PfxD3dgcbtvux2Ox/tySPtmjb0S45vko/pCeN2Bo37qj8QrEun9d73aT38F2Bx799m+OLX2xfHDD427n2fwekSbP2f8q1xX4KxJRbR0dHk5+c3vG+1WomOjj7vulWrVvHiiy+ydOlSgoKCznk9QHx8PIMGDWLz5s3ODy3iJXKt5eQdOaXOeeIe0iZByU6wbjSdRMQ35c6DoFZUXTPIdBK3YaxA7tOnD3l5eRw4cICamhrmzJlz3mkUmzdv5vvf/z5Lly4lMjKy4fGysjKqq6sBOHr0KF9++SVJSUkuzS/iyeZvyie4mR+jenU0HUUEetwFgaHqrCdiQs1p2LnUsWk2IOjbr/cRxgrkgIAAZsyYwYgRI+jevTt33303ycnJTJs2reFUip/97GecOnWKcePGnXOc286dO8nIyCAlJYXBgwfz5JNPqkAWaaSqWhtLcwq5JbkDrYKbmY4jAkGhjiJ5+yKoOmE6jYhv2b0Mak45NsxKA6NrkEeOHMnIkSPPeez5559veHvVqlUXfF3//v3ZunWrU7OJeKuVOw5zoqpOyyvEvaRNchz3tnU+9LnfdBoR35E7D1pFQ6cboLjYdBq3oU56Ij5m/iYr0W2a0y8+wnQUkf+JToP2PXQmsogrVRyFvaug5zjwU0l4Nn02RHxIUXkla/NKuCstGj+dfSzuxGJxzCIXbYHCHNNpRHzDtkVgt2l5xQWoQBbxIYuyC7DbYWy6lleIG+o1DgKCNYss4iq5c6F9T2ivfVzfpAJZxEfY7XYWbLJyfVw410SEmI4jcr7mYZB0J+TOh5oK02lEvNuxfVCQBb3uNp3ELalAFvERmw6VceBoBWPTY0xHEbm49ElQcxK2LzadRMS75c4DLNBzrOkkbkkFsoiPWLDJSkigPyN76uxjcWPX9IO23XQmsogz2e2O5RVxA6GVOuddiApkER9wuqaOD3KLGNWzIy2CPKLDvPgqiwXS7gPrBjiy03QaEe9kzYKyA9qcdwkqkEV8wIptxZyqrtPyCvEMKRPBr5lmkUWcJXeuY0Ns99tNJ3FbKpBFfMCCTVY6RYRwXVy46Sgi365FW+h+G+TOgdoq02lEvIutFrYthMSRENzKdBq3pQJZxMvll57mq33HGJsWg8Wis4/FQ6RNgsoy2Plv00lEvMveT6CyVMsrvoUKZBEvtzDbisUCY7S8QjxJ3E3QppPORBZparlzoXk4JAw1ncStqUAW8WL19XYWZlu5oUtbots0Nx1HpPH8/Byb9Q6udZzXKiJXr+oE7F4GPe4C/2am07g1FcgiXmz9gVLySysZl6HZY/FAve8Bi79mkUWays5/Q12Vllc0ggpkES82f1M+LYMCGJ7UwXQUkcvXsgN0uwVy3oW6GtNpRDxf7lwIi4OYDNNJ3J4KZBEvdaq6juVbi7ktJYrmgf6m44hcmfRJUFECe5abTiLi2U4UwoE1jtljbdj+ViqQRbzUstwiKmttWl4hni3hZmgVrTORRa7W1gWAHXrdbTqJR1CBLOKl5m/KJ75dC3rHtjEdReTK+fk71iLv+xTKDplOI+K5cudBdAZEdDGdxCOoQBbxQgePVrDxYBnj0mN19rF4vt73OP7c/I7ZHCKe6vB2OLxVm/MugwpkES+0YJMVPwuMSYs2HUXk6rW5xnFm6+Z3wFZnOo2I58md5zgRpscY00k8hgpkES9j++/ZxwO7taN9q2DTcUSaRtokOFkIe1eZTiLiWerrYet8x3r+Fm1Np/EYKpBFvMxX+45SVF7FuPRY01FEmk7irRASAVveM51ExLMc+hJOFGhz3mVSgSziZeZnWWndvBk3J0WajiLSdPybObp/7V4OlcdNpxHxHLlzITAUEkeaTuJRVCCLeJHyylo+2l7MHalRBAXo7GPxMr0mgK0adiwxnUTEM9RWOf6+dM+EwBDTaTyKCmQRL/JBbiHVdfVaXiHeKToNIhIcM2Ii8u32rIDqE1pecQVUIIt4kflZVq7t0JIe0a1MRxFpehaLYxb50Jc6E1mkMXLnQWgHiBtoOonHUYEs4iX2HjlJTv5xxqbH6Oxj8V5nZsK2zjObQ8TdnS6FvI+h51hHwx25LCqQRbzE/E1WAvws3NlbZx+LFwvrBJ1ugC1zwW43nUbEfW1fDPW1ag5yhVQgi3iBOls9i7ILGHxtJG1Dg0zHEXGuXuPhWB4UZptOIuK+cudBu+7QoafpJB5JBbKIF1iTV0LJyWrGpseYjiLifEl3gH+QYxZZRM5XegDy1zmWJGnJ3RVRgSziBRZsshLRIpAh1+rsY/EBzds4GodsWwi2WtNpRNzP1gWOP3uOM5vDg6lAFvFwx0/XsGrHEe5IjaaZv/5Ki49ImQCnj8LeT0wnEXEvdrvjKMRON0IbHfl5pfTTVMTD/Tu3iBpbPXela3Oe+JCEmx2tp3PnmE4i4l4KNzvW6Ovs46uiAlnEwy3Kdpx9nNRRZx+LDznTenrXMqgqN51GxH3kzgP/QMdafbliKpBFPNi+klNs/vo4d6Xp7GPxQWo9LXIuWx1sWwDdbnGs1ZcrZrRAXrFiBYmJiSQkJDB9+vTznq+urmb8+PEkJCRw/fXXc/DgwYbnXnrpJRISEkhMTOSjjz5yYWoR97E4uwA/C9yRGmU6iojrnWk9rdMsRBz2r4aKEp193AQuWiCPHDnynIK0qdlsNh555BGWL1/Ojh07eO+999ixY8c517zxxhuEhYWxd+9eHn/8cX7xi18AsGPHDubMmcP27dtZsWIFP/jBD7DZbE7LKuKO6uvtLN5cwMBu7YhsFWw6jojrNbSe/gKOf206jYh5uXMhuA10HWY6ice7aIH8ve99j+HDh/Piiy9SW9v0x+hs2LCBhIQE4uPjCQwMZMKECSxZcu6vyZYsWcKkSZMAGDt2LJ988gl2u50lS5YwYcIEgoKCiIuLIyEhgQ0bNjR5RhF3tu7AMQqOVzImTWcfiw87sxEpV62nxcdVn4JdH0DyaAhQw6irFXCxJ8aNG8ett97KCy+8QEZGBvfeey9+fv+rp5944omrunFBQQGxsf87fiQmJob169df9JqAgABat27NsWPHKCgooG/fvue8tqCg4KryiHiahZsKaBkUwPCk9qajiJgT1gmu6e+YORvwEzVFEN+160OoPa3lFU3kogUyQGBgIC1atKC6upqTJ0+eUyB7ipkzZzJz5kwAiouLKSwsdOn9S0pKXHo/d6FxO1dlrY1lWwu5uVsYpSWHXXLPS9HX27e427hDOo2gzdpnKMldSW27Hk67j7uN2xV8cczgmeMO3/g2AS2jORIQC1dY63jiuJ3logXyihUreOKJJ8jMzCQ7O5uQkJAmvXF0dDT5+fkN71utVqKjoy94TUxMDHV1dZSXlxMREdGo154xdepUpk6dCkBGRgZRUa7fzGTinu5A43aeRdlWKmvruW9AN6Kiwp1+v8bQ19u3uNW4wybDV7+lXeEnkDLcqbdyq3G7iC+OGTxs3CcPQ8FXcOMTREVf3bI7jxq3E110SvjFF19k/vz5TJ8+vcmLY4A+ffqQl5fHgQMHqKmpYc6cOWRmZp5zTWZmJrNnzwZgwYIFDBkyBIvFQmZmJnPmzKG6upoDBw6Ql5fHdddd1+QZRdzVouwCrgkPIaNTmOkoIuY1bwOJtzja66r1tPiibQvBXq/mIE3oojPIa9eude6NAwKYMWMGI0aMwGazMWXKFJKTk5k2bRoZGRlkZmZy//33c++995KQkEB4eDhz5jg6JiUnJ3P33XeTlJREQEAAf/7zn/H393dqXhF3UXi8ki/3HeVHQ7vq7GORM3pNcJyHvPcTR7Es4kty50LHVGiXaDqJ17jkGmRnGzlyJCNHjjznseeff77h7eDgYObPn3/B1z711FM89dRTTs0n4o4Wby7AbocxvXV6hUiDhJuhebij9bQKZPElJbuhKAdGvGQ6iVfxvF13Ij7MbrezKNvKdZ3DuSai6Zc+iXisgEC1nhbflDsPLH6O//+lyahAFvEgW6zl7CupYEzahTelivi0FLWeFh9TXw9b50H8YGipIz+bkgpkEQ+yKNtKUIAfI3t1NB1FxP1Ep0N4F7WeFt+Rv97RRVJnHzc5FcgiHqK6zsbSLYUMT+5Aq+BmpuOIuB+LxTGLrNbT4ity50KzELh2lOkkXkcFsoiH+GxXCcdP13KXlleIXJxaT4uvqKuG7Yvh2tsgKNR0Gq+jAlnEQyzMttKuZRA3JrQ1HUXEfYV1hmv6OWbW7HbTaUScJ28lVB3X8gonUYEs4gFKK2r4bNcRRveOJsBff21FLqnXeDi6Bwo3m04i4jy5c6FFO4gfZDqJV9JPWhEPsDSngLp6u06vEGmM5DvBP9BRQIh4o8rjsGcF9BgL/kZbWngtFcgiHmDR5gKSo1pxbYdWpqOIuL/mYZB4q1pPi/fasQRsNWot7UQqkEXcXN7hk+Ray7krTZ3zRBqt1wQ4fRT2fWo6iUjTy50HEV0hqrfpJF5LBbKIm1uYXUCAn4XM1CjTUUQ8x5nW01vmmE4i0rSO5zuOMuw13nG0oTiFCmQRN2art7N4s5VBie1oGxpkOo6I5zjTenq3Wk+Ll9k63/Fnz7Fmc3g5FcgibuyrfUc5fKKaMVpeIXL5UiZAXRXsWGo6iUjTsNsdm09j+0J4nOk0Xk0FsogbW7jJSqvgAIZ2jzQdRcTznGk9rdMsxFsUb4WSXdqc5wIqkEXc1KnqOlZsL+b2lCiCAvxNxxHxPGdaTx9c61i3KeLpcueCXzNIHm06iddTgSzippZtLaKqtp670rW8QuSKnZlp26rW0+Lh6m2Oowu7DoeQcNNpvJ4KZBE3tSjbSlzbFvSObWM6iojnOtN6eotaT4uHO7AGThVreYWLqEAWcUP5padZt7+Uu9KisegYH5Gr02s8HN0NRTmmk4hcudx5ENQKut1iOolPUIEs4obe31wAwJ291Vpa5KqdaT29RZv1xEPVnIadSyHpDmgWbDqNT1CBLOJm7HY7izYX0C8+gpiwENNxRDxf8zDHrNs2tZ4WD7V7GdSccvw2RFxCBbKIm8n++jgHjlYwJk2zxyJNJmUCVJSo9bR4ptx50CoaOt1gOonPUIEs4mYWZltp3syfW3t2NB1FxHskDFPrafFMFUdh7yroOQ78VLa5ij7TIm6kqtbGB1sKuaVHB0KDAkzHEfEeAYHQY4xaT4vn2bYI7DYtr3AxFcgibuSTnUc4UVXHXWotLdL0eqn1tHig3LnQvie0TzKdxKeoQBZxI4uyrXRoFUy/LhGmo4h4n5gMtZ4Wz3JsHxRk6exjA1Qgi7iJkpPVrN5Twui0aPz9dPaxSJOzWBy/plbrafEUufMAC/QcazqJz1GBLOImlm4pxFZv5y6dXiHiPGo9LZ7Cbnf8tiNuILSKMp3G56hAFnETCzdZSYlpTUJkS9NRRLxXeBzE9lXraXF/1iwoO6DNeYaoQBZxAzuLTrCj6ARjtDlPxPlS1HpaPEDuXAgIhu63m07ik1Qgi7iBRdlWmvlbuD1Fv0YTcbrk0Wo9Le7NVgvbFkLiSAhuZTqNT1KBLGJYna2e93MKGZwYSXiLQNNxRLxf8zDoNuK/rafrTKcROd/eT6CyVMsrDFKBLGLY2r1HKTlZzV3pWl4h4jK91Hpa3FjuXEfnx4ShppP4LBXIIoYtyi4gLKQZgxMjTUcR8R1dhztmknPVelrcTNUJR8fHHneBfzPTaXyWCmQRg05U1fLx9mIyU6IIDNBfRxGXCQiE5DGw60NHQSLiLnb+29HxUcsrjNJPZBGDPswtorquXqdXiJiQMtFRiOxU62lxI7lzISzO0flRjDFSIJeWljJs2DC6du3KsGHDKCsrO++anJwc+vXrR3JyMr169WLu3P/tNp48eTJxcXGkpqaSmppKTo6O6hHPtCjbSkJkKL1iWpuOIuJ7zrSe3qJlFuImThTCgTWO2WOLOqqaZKRAnj59OkOHDiUvL4+hQ4cyffr0864JCQnh7bffZvv27axYsYIf//jHHD9+vOH5//f//h85OTnk5OSQmprqyvgiTeLQsQo2HixjTFo0Fn0jFHG9htbTX0C51XQakf/+Y83+v46PYoyRAnnJkiVMmjQJgEmTJvH++++fd023bt3o2rUrAFFRUURGRlJSUuLSnCLOtCi7AIsFRvdWa2kRY3rdDdghV62nxbB6G2x6EzoPgIguptP4vAATNz18+DAdO3YEoEOHDhw+fPiS12/YsIGamhq6dPnf/zBPPfUUzz//fMMMdFBQ0AVfO3PmTGbOnAlAcXExhYWFTTSKxvHVol7jvrR6u535Gw+REdMSe0UZhRXnLzPyJPp6+xbvGncQEe3T8Mt+h5L4S/9a27vG3Ti+OGYwM+6gQ58RcfxrSjMep8rFtcoZvvr1vhCnFcg333wzxcXF5z3+4osvnvO+xWK55K+Xi4qKuPfee5k9ezZ+fo4J75deeokOHTpQU1PD1KlT+d3vfse0adMu+PqpU6cydepUADIyMoiKcn2nMhP3dAca98VtOFBK4YkafnZrd6/5PHnLOC6Xxu0F+twLHzxOlKUEoi69ZM+rxt1IvjhmMDDuTxdBy46E97vX6PFuvvr1/ianFcirVq266HPt27enqKiIjh07UlRURGTkhc9/PXHiBKNGjeLFF1+kb9++DY+fmX0OCgrie9/7Hn/4wx+aNryIky3cZKVFoD8jkjuYjiIiyaNh+S8cpwd8S4Es4hSl+2HvKhj0S5197CaMrEHOzMxk9uzZAMyePZs77rjjvGtqamoYPXo09913H2PHjj3nuaKiIgDsdjvvv/8+PXr0cH5okSZSVWvjw61F3NqzIyGBRlY5icjZzrSe3qrW02LIxjfALwDSJplOIv9lpEB+8sknWblyJV27dmXVqlU8+eSTAGRlZfHAAw8AMG/ePNasWcNbb7113nFu3/3ud+nZsyc9e/bk6NGj/PrXvzYxDJEr8tH2Yk5V1zEmTZvzRNxGrwlQcQT2f2Y6ifiamtOw+R249jZo1dF0GvkvI9NXERERfPLJJ+c9npGRwaxZswC45557uOeeey74+k8//dSp+UScaVF2AdFtmtM3LsJ0FBE540zr6S1zoOsw02nEl2xfBFXH4boHTSeRs6iTnogLHT5Rxdq8Ekb3jsbPT2cfi7iNhtbTH6j1tLiO3Q4b/g7tukOnG0ynkbOoQBZxoSU5BdTb0fIKEXeUMkGtp8W1CjZBUQ70uV+d89yMCmQRF7Hb7SzcVEDva9oQ3y7UdBwR+aaYPhAer9bT4jobZ0FgqOMfZ+JWVCCLuMj2whPsPnySoGkPDwAAIABJREFUu9JiTEcRkQtR62lxpYpjsG2RozgOamk6jXyDCmQRF1mYbSXQ34/bemmXsojbUutpcZXNb4OtGvo8YDqJXIAKZBEXqLXVszSnkJuTImkTEmg6johcTHg8xF7vaBpit5tOI96q3gZZ/4DOAyCyu+k0cgEqkEVc4PPdJRyrqGFMby2vEHF7vcZDyS4o2mI6iXirvJVw/GvH5jxxSyqQRVxg0WYrES0CuSmxnekoIvJtkkeDf6BjFlnEGTb+HVp2dDQHEbekAlnEyY6frmHVjiNkpkbRzF9/5UTcXki4o3GIWk+LM5Tuh72rIH0y+DcznUYuQj+tRZzsg9wiamz1Or1CxJOkqPW0OMnGN8AvANImmU4il6ACWcTJFmZbSWzfkuSoVqajiEhjdR0OwW10JrI0rdpK2PyOY2lFK51o5M5UIIs40f6SU2z++jh3pUdjUZckEc8REAQ9xsCuD6H6pOk04i22LYSq4zrazQOoQBZxokXZBfhZ4M5UtZYW8Ti9JkBdJexQ62lpAnY7bPg7tOsOnW80nUa+hQpkESepr7ezeHMBA7q2I7JVsOk4InK5Yq+DsDjI1TILaQIF2VCU4zjaTb9RdHsqkEWcZN2BYxQcr2RMmmaPRTzSmdbTB9ZCeYHpNOLpNv4dAkMd/0+J21OBLOIki7ILaBkUwIjkDqajiMiVShkP2GGrWk/LVag4BtsWOU5HCdaGbU+gAlnECU7X1LF8axEje3YkuJm/6TgicqXOtJ7eotbTchU2/xNs1f+/vfsOr6pK2z/+TQFC6AQCKQgJCSUJSQxBqkoHG4jgIKMIDhhHQB39ifJasPKKU3TGLoIjo4OMFAFFHUHEAgiEXqUGUiEkEGpIOev3x9G8oQdJsnLOuT/X5aXZZ++z78ccFk921t5LN+e5EDXIIhXgv1uyOFFQzOD2evaxiMuLHQrZ26iWs9V2EnFFjmJIngbNu0FgW9tppIzUIItUgDlr0mnWsCaJzRvYjiIiVyrmNqjmT63NH9lOIq5o5yI4sh+u0dVjV6IGWaScZeadYtnuQ9x2dSje3rpTWcTl1WwAVw+n5q6FcDTDdhpxNaunQu2mzsVBxGWoQRYpZ5+uS8cY9PQKEXfS6X4wxbDyXdtJxJXk7oFdi6H9SPCpZjuNXAY1yCLlyBjD3LXpdGjRgOYBtWzHEZHy0jCM/LC+sOafWllPym71NPD2cTbI4lLUIIuUo20HT7Lr4HFuS9DNeSLu5njsSMjPg3WaiyxlUHjK+VlpczPUDbKdRi6TGmSRcvTVtlyq+3pzU6wGQxF3UxgYB1d1gRVvQXGR7ThS1W2eA/lH9Gg3F6UGWaScFBQ5WLTjMH2jmlDXT3PNRNxSlwcgbz9sm287iVRlxsCq96BxW2jRzXYa+Q3UIIuUkyXbD5KXr2cfi7i1Vv0hIAKWvaaFQ+TC0tdC5nroMMq5ZLm4HDXIIuVk9ppUAvx9uTaike0oIlJRvL2h81hn87Nvme00UlWtfg+q13YuMiMuSQ2ySDnYeeAYi7cdZEBMI3x99MdKxK3FDQP/AFj+uu0kUhWdyIHNcyHuDvCrazuN/Eb6m1ykHLy9dDc1q/lwe1xj21FEpKJVqwnXJMGOryD7Z9tppKpZ9yEUn9bNeS5ODbLIFUrNPcn8DRkMu+Yq6tf0tR1HRCpDh9Hg6wcr3rCdRKoSRzEkT4Pm3SCwre00cgXUIItcoSnf78HbC+69Lsx2FBGpLLUaQfzvYcNMOHbAdhqpKnYugiP74RpdPXZ1apBFrsDBY/n8JzmVwQmhBNWraTuOiFSmTmOhuNB5Q5YIwOqpULupc3EQcWlqkEWuwPs/plBU7OC+61vajiIila1RBLS5ydkUFZywnUZsy90DuxY7l5X20bPwXZ0aZJHfKO9UIR/9tI8b2wUR1qiW7TgiYkOXB+DUYVg/w3YSsW31NPDydjbI4vKsNMi5ubn06dOHyMhI+vTpw+HDh8+7n4+PD/Hx8cTHxzNgwICS7Xv37qVjx45EREQwdOhQCgoKKiu6SIkPV6Rw/HQR93fX1WMRj9WsI4R2cN6s5yi2nUZsKTwF6z6CtjdD3SDbaaQcWGmQJ0+eTK9evdi5cye9evVi8uTJ592vZs2arF+/nvXr17NgwYKS7Y8//jgPP/wwu3btokGDBkybNq2yoosAcKqgmPeXpdCjdWOig+vZjiMitnh5Oa8iH06B7Z/bTiO2bJ4D+Uegw722k0g5sdIgz58/nxEjRgAwYsQI5s2bV+ZjjTEsWbKEIUOG/KbjRcrDzNX7yT1RwJgeEbajiIhtbW6GBi20/LQnWz0VGreBFt1sJ5FyYuWhrQcOHCAoyPkriKZNm3LgwPkfkZOfn09iYiK+vr5MmDCBW2+9lZycHOrXr4+vrzN6aGgo6enpFzzXlClTmDJlCgBZWVlkZGSUczUXl52dXannqyrcue7CYgdvf7uTuOBahFTPP+Mz5c51X4zq9iyq+1z+UXdRf9mLHFq3kIKmCZWYqmLpe31p1Q5upHHGOo50fYqTmZkVmKrieer3+3wqrEHu3bs3WVlZ52yfNGnSGV97eXnh5eV13vfYt28fISEh7Nmzh549e9KuXTvq1bu8X2cnJSWRlJQEQGJiIsHBwZd1fHmwcc6qwF3r/iQ5lYPHC3n59niCgwPPed1d674U1e1ZVPdZGo2BtW/SaMfHkOBej/jS9/oSVj4P1WtT/9r7qO8GS0t76vf7bBXWIC9evPiCrzVp0oTMzEyCgoLIzMwkMPDcJgMgJCQEgPDwcLp37866desYPHgwR44coaioCF9fX9LS0kr2E6loxQ7DO0t3ExVUl+6ttKy0iPyiei3n6nrf/xVydkOAbt71CCdyYPNcSBgObtAcy/+xMgd5wIABTJ8+HYDp06czcODAc/Y5fPgwp0+fBuDQoUMsW7aMqKgovLy86NGjB7Nnz77o8SIV4b9bsthz6ARje0Rc8DcfIuKhrklyPv92xZu2k0hlWfchFJ92/nAkbsVKgzxhwgQWLVpEZGQkixcvZsKECQAkJyczerTzQ7Zt2zYSExOJi4ujR48eTJgwgaioKABefvllXnnlFSIiIsjJyWHUqFE2yhAPY4zhzW93Ed6oFv1jmtqOIyJVTe1AiLsD1v8bThyynUYqmqMYkqdB824Q2NZ2GilnVm7SCwgI4Jtvvjlne2JiIlOnTgWgS5cubNq06bzHh4eHs2rVqgrNKHK273ceYkvGUf48OBYfb109FpHz6DwO1v7LuWhE98dtp5GKtGsxHNkPfZ63nUQqgFbSEymjN7/dRVA9P269WnPeReQCGreGVv1h1RTn4hHivla9B7WbOh/zJ25HDbJIGSSn5LJqby73XhtOdV/9sRGRi+g8Dk4egg0zbSeRipK7x3kFuf1I57xzcTv6m16kDN5aupsG/tW445pmtqOISFXXohsExf+y/LTDdhqpCMnvg5e3s0EWt6QGWeQStmYcZcn2g/yhaxj+1a1M2xcRV/Lr8tM5u2DHV7bTSHkrPAXrPoK2N0PdINtppIKoQRa5hLe/202t6j7c3bmF7Sgi4iqiboV6zWD567aTSHnbPAdOHYYO99pOIhVIDbLIRaQcOsHCjRnc1bk59fw1z0xEysjHFzqNgf3LIS3ZdhopT6unQuM2zqk04rbUIItcxLvf78bXx5tR3cJsRxERV5MwHGrU01Vkd5K2BjLWORcG0WJRbk0NssgFZOXlM3tNGr9LDCWwjp/tOCLiamrUgcR7YNsCyN1rO42Uh9XvQfXaEDvUdhKpYGqQRS5g6g97cBi477qWtqOIiKvqeB94+cBPb9tOIlfqRA5snutsjv3q2k4jFUwNssh5HD5RwIxV+xkQF0yzhv6244iIq6obDO1uh3Ufwslc22nkSqz7EIpPwzW6Oc8TqEEWOY8PlqdwsqCY+7vr6rGIXKEu46DwpPPZueKaHMWQPA2ad4PAtrbTSCVQgyxyluOni/hgeQp9oprQqkkd23FExNU1iYaWvWDlu1B02nYa+S12LYYj+6HDKNtJpJKoQRY5y8cr95N3qpAxunosIuWlywNw4iBs/MR2EvktVr0HtZtC21tsJ5FKogZZpJT8wmLe+2EPXVoGcPVVDWzHERF3Ed4dmrRzPvJNy0+7ltw9zivI7UeCj56H7ynUIIuUMmdtGgePnWZsjwjbUUTEnfy6/PShn53NlriO5PfByxvaj7CdRCqRGmSRXxQVO3j3uz3ENatPl5YBtuOIiLuJuQ3qBMPy12wnkbIqPAXrPoK2NzufSCIeQw1yBdqUlscHq7Nsx5AyWrgpk/25JxnTvSVeWiFJRMqbTzXodD+k/AAZ622nkbLYPAdOHYYOerSbp1GDXIEWbc1iyopMVuzOsR1FLsHhMLz17W4iA2vTp20T23FExF21HwHV68CKN2wnkbJYPRUat4EW3WwnkUqmBrkCjekRQXDd6jw9fzMFRbopoypbsv0gPx84xv3dW+LtravHIlJB/Oo5m+TNc+FIqu00cjFpayBjHXQY7ZxDLh5FDXIF8qvmwyPdQ9l18DjTftxrO45cgDGGN5fuIrRBTW6J0xwzEalgHf/o/PfKd+zmkItbPRWq13YuLS0eRw1yBevSoh79opvw2jc7STt80nYcOY+f9uSybv8R7rsunGo++iMhIhWsfjPnDXtrPoBTR2ynkfPwzj/snH8cOxT86tqOIxaoG6gEE2+JBuD5z7ZaTiLn89bSXTSqXYPbE5vZjiIinqLzOCg4Dmun204i5+G/fQ4Un3ZOrxCPpAa5EoTUr8lDvSP5eusBvtl2wHYcKWVTWh4/7DzEqG5h+FXzsR1HRDxFcDyEXQc/vQNFBbbTSGmOYvy3/Qead4UmUbbTiCVqkCvJH7qGERlYm2cWbOFUQbHtOPKLt5buoo6fL3d1usp2FBHxNF0ehGMZsGWu7SRS2vaF+B5L09VjD6cGuZJU9/XmhVtjSDt8ireW7rIdR4BdB4/x1ZYsRnZpQR0/LR8qIpUsorfzEWLLXwdjbKcRgPw8+GoChQ1aQttbbKcRi9QgV6JO4QHcdnUI7363h93Zx23H8XhvL91DDV9vRnZpYTuKiHiiX5efPrAZ9nxrO40ALJoIxzI5cv0k58Iu4rHUIFey/7mxLTWqefPM/C0YXTGwJu3wSeavT2fYNVcRULuG7Tgi4qna3Q61mzivIotde5Y6nyzSeSyFgXG204hlapArWeM6NXisX2t+3HWIzzdm2o7jsd77fg9eXnDvteG2o4iIJ/OtAR3vg91LIGuz7TSe6/RxWPAgNGwJPZ60nUaqADXIFvy+Y3PahdTjhc+3ciy/0HYcj3Po+Glmrk5l0NUhBNevaTuOiHi69vdAtVpaftqmJS/AkX0w8A2opr8XRA2yFT7eXrx4awzZx0/z6qKdtuN4nPd/3EtBsYP7rm9pO4qICPg3hIThsGkW5KXbTuN59q2Ale/CNUnQvIvtNFJFqEG2JK5Zfe7seBUfLN/Llow823E8xtH8Qj5csY8bY4Jo2bi27TgiIk6d7gfjgFXv2k7iWQpPwYJxUK8Z9HrGdhqpQtQgWzS+bxsa+Ffn6XmbcTh0w15l+HDFPo6dLuL+7rp6LCJVSIMWEDUQkv8J+Udtp/EcS1+CnF0w4DWooYsm8n/UIFtUz78aT9zYlrX7jzBrTartOG7vVEEx7/+4l+tbNSYmpJ7tOCIiZ+ryAJw+Cus+tJ3EM6SvcT49JOFuaNnDdhqpYtQgW3ZbQgjXtGjIS19uJ/eElhutSJ8kp5JzooCxPSJsRxEROVdIe+fyxj+9DcVFttO4t6LTMG8s1G4KfV+0nUaqICsNcm5uLn369CEyMpI+ffpw+PDhc/b59ttviY+PL/nHz8+PefPmATBy5EjCwsJKXlu/fn1ll1BuvLy8eOHWGI7nF/Hnr7bbjuO2CosdTPl+D4nNG3BNWEPbcUREzq/LA5CXClvn2U7i3n74G2Rvg5tfBT/9RlHOZaVBnjx5Mr169WLnzp306tWLyZMnn7NPjx49WL9+PevXr2fJkiX4+/vTt2/fktf/8pe/lLweHx9fmfHLXeumdRjVLYyZq1NZs+/cHxbkys1fn0H6kVO6eiwiVVtkPwiIhOWvafnpipK1ydkgxw6F1v1tp5EqykqDPH/+fEaMGAHAiBEjSq4MX8js2bO54YYb8Pf3r4x4VjzYK5Kgen48NW8zRcUO23HcisNheHvpLtoG1aV768a244iIXJi3N3QZB5kbIOVH22ncT3EhzBsDNRtA/3Mvzon8ytfGSQ8cOEBQUBAATZs25cCBAxfdf+bMmTzyyCNnbHvyySd5/vnnS65A16hx/uWCp0yZwpQpUwDIysoiIyOjHCoou+zs7DLv+0DXIJ74Yi+v/3cjQ+MDKzBVxbucuiva0l1H2J19guf7tyAzs2JXL6xKdVcm1e1ZVHcFa3w9TfwaUvjtX8itYfeJO+72va69bgp1szaS2/sf5B/JhyPn7wncre6y8tS6z6fCGuTevXuTlZV1zvZJkyad8bWXlxdeXl4XfJ/MzEw2bdpEv379Sra99NJLNG3alIKCApKSknj55ZeZOHHieY9PSkoiKSkJgMTERIKDg39LOVekrOccFhTE17uPM23lAX7frQ1N6vpVcLKKZeP/9dmMMXw8Zw8tAvy587oofLwv/FkrL1WhbhtUt2dR3RWs0x/xWfq/BPsehcA2lXPOC3Cb73X2z7D2TYgaSMNuIy+5u9vUfZk8te6zVdgUi8WLF7N58+Zz/hk4cCBNmjQpuZKXmZlJYOCFr5Z+8sknDBo0iGrVqpVsCwoKwsvLixo1anDPPfewatWqiiqjUnl5efHcgGgKih28uHCb7Thu4cddh9iUnscfr29ZKc2xiEi56DAafP20/HR5cRTD/LFQvTbc+FfbacQFWJmDPGDAAKZPnw7A9OnTGThw4AX3/fjjjxk2bNgZ235tro0xzJs3j5iYmIoLW8maB9RibPcIPtuQwY87D9mO4/Le/HYXTerWYFBCiO0oIiJlVysA4u+Ejf+BYxefhihlsPIdSFsNN/wZarv2FEapHFYa5AkTJrBo0SIiIyNZvHgxEyZMACA5OZnRo0eX7JeSkkJqairXX3/9GcffeeedtGvXjnbt2nHo0CGeeuqpSs1f0e67PpwWAf5MnL+Z00XFtuO4rDX7DvPTnlzuvTacGr4+tuOIiFyezmOdN5WtmmI7iWvL2Q3fvACtboB2Q2ynERdh5Sa9gIAAvvnmm3O2JyYmMnXq1JKvW7RoQXp6+jn7LVmypELz2eZXzYfnB8Zw9/ureO/7PYzrGWk7kkt6e+kuGvhXY9g1V9mOIiJy+QJaQpubYPVU6PawlkL+LRwOWPAA+FSHm1+Bi9zzJFKaVtKroq5r1Zib2gXx+pJdpOaetB3H5WzPOsribQcZ2SWMWjWs/BwoInLluv4J8o/A/DHOebRyeZKnwb5l0G8S1NXNZ1J2apCrsKdvjsLX24tnFmzB6IHxl+XtpbupVd2HEV2a244iIvLbNesAfSfB1vnw3ye0eMjlOLwPFj0D4T3g6rtspxEXowa5Cmtaz4+H+7RiyfaDLNqqmzTKan/OST7bkMGdnZpT37+67TgiIlemyzjoNNZ5o9ny122ncQ3GwGcPOadUDHhNUyvksqlBruJGdGlBm6Z1eO6zrZwsKLIdxyW88/1ufL29Gd0tzHYUEZHy0fdFiB4Ei56GjbNsp6n61n0Ee76F3s9Cfd2HIpdPDXIVV83HmxdujSH9yCleX7LLdpwq7+DRfGYnpzEkMZRAF19oRUSkhLc3DHoXmneDeffDnqW2E1VdRzPgv09C866QOMp2GnFRapBdQIcWDbm9fSjvfb+HnQeO2Y5TZRljeHXxDoocDv54nd3lWUVEyp1vDbjj3xAQAf8ZDlmbbCeqeoyBzx+G4gIY8LrzBwuR30CfHBcx4YY21Krhy9PzN+uGvfMwxjD5q+18vCqVP3QN46oAf9uRRETKX836cNccqFEHPhoCR/bbTlS1bJoNO76Cnk85H5Mn8hupQXYRAbVr8Hj/Nvy0J5f56zNsx6lSjDH87xfbePe7PdzV6SqeuLGt7UgiIhWnXgjcORsKTzmb5JO5thNVDccPwpfjISQROt1vO424ODXILuSODs2Ia1afFxduI+9Uoe04VYIxhhc+38Z7P+xlROfmvDAwBm9v3a0sIm6uSZRzusXhvTDz91CYbzuRfV+Mh4ITMPBN8NbqqXJl1CC7EG9vLybdGkPuidO88vXPtuNYZ4zhuc+28v6yvdzTtQXPDojGS4/yERFPEXat88a9/Stg7r2evZDI1vmwdR5c/zgEtrGdRtyAGmQXExNSj7s7t+DDn/axKS3PdhxrHA7DxPlb+GB5CqO7hTHx5ig1xyLieWJug37/C9sWwFf/45kLiZzMhYWPQtNY6PqQ7TTiJtQgu6BH+raiYa0aPDVvE8UOzxsMHQ7DU/M38+FP+7jvunCevKmtmmMR8Vydx0LncbDqXVj+mu00le+r/4FTuc6pFT7VbKcRN6EG2QXV9avG0ze3ZUNaHjNXe9YdzA6H4YlPNzFj5X7u796SCTe0UXMsItLnBYi+DRZNhI2f2E5TeXb8FzbOhG6PQFCs7TTiRtQgu6gBccF0Dg/gz1/9zKHjp23HqRQOh2HC3I3MXJ3KuB4RPNavtZpjERH4ZSGRd6DFtTBvjGcsJJKfB5/9CRq3hesetZ1G3IwaZBfl5eXFC7dGc7KgiMlfbrcdp8IVOwzjZ2/kk+Q0HuoVyf/r20rNsYhIab41YOhH0CgSZt7l/guJfP00HM9yTq3wrWE7jbgZNcguLCKwDvdeG87sNWms2uu+z8EsdhjGz9rAnLVpPNy7FQ/3UXMsInJeNes7n5HsV9e9FxLZ/S2sne6cex3a3nYacUNqkF3cAz0jCalfk6fnbaaw2GE7TrkrKnbwyCfrmbsunUf7tuKh3pG2I4mIVG31Qpyr7bnrQiKnj8NnD0LDltDjCdtpxE2pQXZxNav78OyAaH4+cIwPlqXYjlOuioodPPzJBuavz+Cx/q0Z11PNsYhImQS2hWEznAuJfDzM2Sy7i2+ehyOpzqkV1WraTiNuSg2yG+gT1YTebQN5dfEOMvPcYxAsLHbw0Mz1fLYhg/+5oQ1jukfYjiQi4lpadHMuJJK60n0WEtm33Pk4u2uSoHln22nEjalBdhPP3BKNwxhe+Hyr7ShXrKDIwQMz1rFwUyZP3dSW+65vaTuSiIhrKllI5DP4aoJrLyRSeArmj4P6V0GvibbTiJtTg+wmmjX054GekXyxKYulPx+0Hec3KyhyMHbGWr7aksXTN0cx+tpw25FERFxb5zG/LCQyBZb9w3aa3+7bSZC7Gwa8DjVq204jbk4NshsZfW0Y4Y1r8cyCLeQXut6v0k4XFTPm32tYtPUAz94SxahuYbYjiYi4hz4vQMxgWPyMay4kkpYMK96EhBEQ3t12GvEAapDdSA1fH14YGMO+nJO8891u23EuS35hMfd/tJbF2w7ywsBoRnZVcywiUm68veHWt/9vIZHd39pOVHZFp2H+WKjdFPq+YDuNeAg1yG6ma0QjBsQF89bS3aQcOmE7TpnkFxZz34drWLL9IJMGxTC8cwvbkURE3E/JQiKt4D/DIXOj7URl8/1fIHs73PIP8KtnO414CDXIbuipm9pS3cebh/6znh93HqLYUXVvysgvLObefyXz3Y5sXrqtHXd2bG47koiI+6pZH+6a7Ww0/+0CC4lkboAfXoG4YdCqr+004kHUILuhwLp+TBoUw97s49w1bSXdXl7Cn7/azu7s47ajneFUQTGjpyfz465D/HlwLMOuucp2JBER91c32NkkF+XDR4Or7kIixYXOqRX+Ac4ncYhUIjXIbmpgfAirnuzNm79PoE3TOrz7/R56/e07Br21jI9+2kfeyUKr+U4WFDFq+mqW7T7EX4bE8bsOzazmERHxKIFt4Y6P4XBK1V1IZNnfIWsT3PwK+De0nUY8jK/tAFJx/Kr5cFNsEDfFBnHwWD7z12Uwe00aT83bzPOfb6VP2yYMbh/CdZGN8fWpvJ+VTpx2Nser9ubyyu/iGHR1aKWdW0REftGiK9w2BWbdA3NGw+/+Bd4+djOdyHEubJL6E/z0NkQPgra32M0kHkkNsocIrOPHvdeFM/raMLZkHGX2mjQWbMhg4aZMGtepwa3xwQxuH0qbpnUrNMfx00X84Z+rSd6Xy6tD4xkYH1Kh5xMRkYuIHgTHspyLiHz5ONz4F/DyqpxzGwOHdjqb4dSVsH8l5Ox0vuZdDa7qBDf8pXKyiJxFDbKH8fLyIiakHjEh9XjixrZ8+/NB5qxJ45/LUnjvh71EB9dlSPtQBsQFE1C7Rrme+1h+Iff8czXrUo/wjzuu5pa44HJ9fxER+Q063Q9H02H561AvBLo9XDHnKTwFGetg/0+QusrZFJ/6Zf5zzQbQrCPE/97ZGAdfDdVqVkwOkTJQg+zBqvt60y+6Kf2im5J7ooAF69OZvTaN5z7byqSF2+jRJpAh7UPp0TqQ6r5XNgXjaH4hI99fxYa0PF6742puig0qpypEROSK9X4ejmbC4mehTjDEDb3y9zx+8JdmeKXz35kbwPHL/S8BkdDmRmdT3KwTNIqsvCvXImWgBlkAaFirOiO7hjGyaxg/Zx1jzto05q5NZ9HWAzTwr8bA+BAGJ4QSE1IXr8scxI7mF3L3tFVsTs/jzd9fTf8YNcciIlWKtzfc+hYcPwDzx0DtxtCyZ9mPdziczypO/ck5VSL1J+cNgAA+NSAkATqP/aUh7gi1AiqkDJHyogZZztG6aR2euLEtj/VrzQ87DzF7bRozVu3ng+UptGpSmyHtQ7k1PoTAun6XfK+8U4XcPW0lWzOP8uadCfSLbloJFYiIyGXzrQF3/BvevwH+czeqYIj9AAAPS0lEQVTc8wXQ6Pz7FpyA9DX/1wynrobTec7XajV2NsEdRjuvDgfFOt9bxIWoQZYL8vXxpkebQHq0CSTvZCGfbcxgzto0/veL7Uz+cjvXtWrM4IRQ+kQ1wa/auXc+HzlZwPBpq9iedZS372xP76gmFqoQEZEy86vnfEby1D7w7yH43PJvIBjy0n95usQv0yWyNoEpBrycj4yLGeRshq/qCA3CNF1CXJ4aZCmTev7VuKtTc+7q1Jzd2ceZ+8sUjAc+XkcdP19uiQtmcEIoCVfVx8vLi7xTRdw7eyU7Dxzn3eHt6dlGzbGIiEuoGwx3zYH3+9JowZ3gWx3yUp2vVfOHkPbOG/mu6gShHZyr84m4GSsLhcyaNYvo6Gi8vb1JTk6+4H5fffUVrVu3JiIigsmTJ5ds37t3Lx07diQiIoKhQ4dSUFBQGbHlFy0b12Z8vzb8+HhPPhrVkd5tmzB3bRqD315Or799x+vf7OTBT3ex8+Bx3r1bzbGIiMsJbAPDZlJcqwmEJkL/l+Heb2HCfhj5OfR6GiL7qDkWt2WlQY6JiWHu3Llcd911F9ynuLiYsWPH8uWXX7J161Y+/vhjtm7dCsDjjz/Oww8/zK5du2jQoAHTpk2rrOhSio+3F90iG/Hq0HhWP9mbPw+OpVGdGvxt0Q72Hc7nvbsT6dE60HZMERH5LZp34dCt/4HbP4BOf3TeaOdTzXYqkUphpUFu27YtrVu3vug+q1atIiIigvDwcKpXr84dd9zB/PnzMcawZMkShgwZAsCIESOYN29eZcSWi6jjV43fdWjGJ/d15ofHejD99224vlVj27FERERELluVnYOcnp5Os2bNSr4ODQ1l5cqV5OTkUL9+fXx9fUu2p6enX/B9pkyZwpQpUwDIysoiIyOjYoOfJTs7u1LPVxX4AP5Fxyr9/3VV4Infb1DdnkZ1ew5PrBlUt1Rgg9y7d2+ysrLO2T5p0iQGDhxYUac9R1JSEklJSQAkJiYSHFz5q7fZOGdVoLo9i+r2LKrbc3hizaC6PV2FNciLFy++ouNDQkJITU0t+TotLY2QkBACAgI4cuQIRUVF+Pr6lmwXERERESkPVuYgl0WHDh3YuXMne/fupaCggJkzZzJgwAC8vLzo0aMHs2fPBmD69OmVekVaRERERNyblQb5008/JTQ0lBUrVnDTTTfRr18/ADIyMrjxxhsB8PX15Y033qBfv360bduW3/3ud0RHRwPw8ssv88orrxAREUFOTg6jRo2yUYaIiIiIuCErN+kNGjSIQYMGnbM9ODiYL774ouTrG2+8saRhLi08PJxVq1ZVaEYRERER8UxVdoqFiIiIiIgNapBFREREREpRgywiIiIiUooaZBERERGRUtQgi4iIiIiUogZZRERERKQUNcgiIiIiIqWoQRYRERERKUUNsoiIiIhIKWqQRURERERK8TLGGNshKkujRo1o0aJFpZ4zOzubxo0bV+o5qwLV7VlUt2dR3Z7DE2sG1e1JUlJSOHTo0DnbPapBtiExMZHk5GTbMSqd6vYsqtuzqG7P4Yk1g+oWTbEQERERETmDGmQRERERkVJ8nn322Wdth3B37du3tx3BCtXtWVS3Z1HdnsMTawbV7ek0B1lEREREpBRNsRARERERKUUNsoiIiIhIKR7XIKemptKjRw+ioqKIjo7mH//4BwC5ubn06dOHyMhI+vTpw+HDhwEwxvDggw8SERFBbGwsa9euLXkvHx8f4uPjiY+PZ8CAARc85/Tp04mMjCQyMpLp06eXbC8oKCApKYlWrVrRpk0b5syZc97jn3zySZo1a0bt2rXP2P7OO+/Qrl074uPj6datG1u3bvWIuj/44AMaN25ckmHq1KkeUffDDz9ccv5WrVpRv359j6h737599OrVi9jYWLp3705aWprb1H3y5Eluuukm2rRpQ3R0NBMmTCh57fvvvychIQFfX19mz559wfO7W91lHdfcqWZ3HtMuVrc7j2kXq9sVx7Rjx46VHBsfH0+jRo3405/+dN7j16xZQ7t27YiIiODBBx/k15m8s2bNIjo6Gm9vb9d4lJzxMBkZGWbNmjXGGGOOHj1qIiMjzZYtW8z48ePNSy+9ZIwx5qWXXjKPPfaYMcaYhQsXmv79+xuHw2FWrFhhrrnmmpL3qlWr1iXPl5OTY8LCwkxOTo7Jzc01YWFhJjc31xhjzMSJE82TTz5pjDGmuLjYZGdnn/c9VqxYYTIyMs45X15eXsl/z58/3/Tr188j6v7nP/9pxo4de8kM7lZ3aa+99pq55557PKLuIUOGmA8++MAYY8w333xj7rrrLrep+8SJE2bJkiXGGGNOnz5tunXrZr744gtjjDF79+41GzZsMMOHDzezZs26aA53qrus45o71ezOY9rF6i7N3ca0i9XtqmNaaQkJCea7774773t06NDBrFixwjgcDtO/f/+Surdu3Wq2b99urr/+erN69epLZrHN4xrksw0YMMB8/fXXplWrViYjI8MY4/xAtmrVyhhjTFJSkpkxY0bJ/qX3K8uHbcaMGSYpKank69LvFxoaao4fP17mrBc734wZM0z//v3L/F6uXPfl/GVyNleuu7TOnTubr7/+uszv5cp1R0VFmf379xtjjHE4HKZOnTplfi9XqtsYYx588EEzZcqUM7aNGDHikg3y2dyh7l/PU9ZxzZVr9pQxzZgLf6/deUwz5sy6XXVM+9XPP/9sQkNDjcPhOOf4jIwM07p16wu+nzHGZRpkj5tiUVpKSgrr1q2jY8eOHDhwgKCgIACaNm3KgQMHAEhPT6dZs2Ylx4SGhpKeng5Afn4+iYmJdOrUiXnz5p33HBc6/siRIwA8/fTTJCQkcPvtt5ec83K8+eabtGzZkscee4zXXnvNY+qeM2cOsbGxDBkyhNTUVI+pG5y/ntu7dy89e/Ys0/6uXndcXBxz584F4NNPP+XYsWPk5OS4Xd1Hjhzhs88+o1evXpes7WLcoe7LHdfcoWZPGNMu9Bl39zHt7LpdcUwrbebMmQwdOhQvL6/zHh8aGnrR412FxzbIx48fZ/Dgwfz973+nbt26Z7zm5eV13m/82fbt20dycjIzZszgT3/6E7t37y7z+YuKikhLS6NLly6sXbuWzp078+ijj152HWPHjmX37t28/PLLvPjii5fc3x3qvuWWW0hJSWHjxo306dOHESNGXPIYd6j7VzNnzmTIkCH4+Phccl93qPuvf/0r3333HVdffTXfffcdISEhl6zd1eouKipi2LBhPPjgg4SHh5f5PGdzl7ovZ1xzh5o9YUy72Gfcnce089XtimNaaTNnzmTYsGG/6VhX4pENcmFhIYMHD+bOO+/ktttuA6BJkyZkZmYCkJmZSWBgIAAhISFn/DSflpZGSEhIyWsA4eHhdO/enXXr1rFy5cqSSewLFiy44PEBAQH4+/uXnP/2229n7dq1FBcXlxw/ceLEMtd0xx13XPAnQnerOyAggBo1agAwevRo1qxZ4xF1/6qsg5O71B0cHMzcuXNZt24dkyZNArjozTyuWHdSUhKRkZEXvOmlLNyx7kuNa+5SsyeMaRf7XrvzmHa+ul1xTPvVhg0bKCoqKllM5Oy6Q0JCzrjp8OzjXYrtOR6VzeFwmOHDh5uHHnrojO2PPvroGRPex48fb4wx5vPPPz9jwnuHDh2MMcbk5uaa/Px8Y4wx2dnZJiIiwmzZsuWc8+Xk5JgWLVqY3Nxck5uba1q0aGFycnKMMcYMHTrUfPPNN8YY5xy0IUOGXDT72fOHduzYUfLfCxYsMO3bt/eIun+dT2WMMXPnzjUdO3b0iLqNMWbbtm2mefPm55375a51Z2dnm+LiYmOMMU888YR5+umn3aruJ5980tx2220lNZ6tLHOQ3anuso5r7lSzu49pF/uMu/OYdqG6XXVMM8aYxx9/3EycOPGCeY059ya9hQsXnvG6q8xB9rgG+YcffjCAadeunYmLizNxcXFm4cKF5tChQ6Znz54mIiLC9OrVq+QD4XA4zJgxY0x4eLiJiYkp+aYuW7bMxMTEmNjYWBMTE2OmTp16wXNOmzbNtGzZ0rRs2dK8//77JdtTUlLMtddea9q1a2d69uxp9u3bd97jx48fb0JCQoyXl5cJCQkxzzzzjDHGOek/KirKxMXFme7du5vNmzd7RN0TJkwwUVFRJjY21nTv3t1s27bNI+o2xphnnnnGPP744xc8tzvWPWvWLBMREWEiIyPNqFGjSgZ5d6g7NTXVAKZNmzYled977z1jjDGrVq0yISEhxt/f3zRs2NBERUV5RN1lHdfcqWZ3HtMuVrcx7jumXaxuVx3TjDEmLCzsop9PY4xZvXq1iY6ONuHh4Wbs2LElP/zMnTvXhISEmOrVq5vAwEDTt2/fi76PbVpqWkRERESkFI+cgywiIiIiciFqkEVERERESlGDLCIiIiJSihpkEREREZFS1CCLiIiIiJSiBllExA34+PgQHx9PdHQ0cXFx/O1vf8PhcFz0mJSUFGbMmFFJCUVEXIcaZBERN1CzZk3Wr1/Pli1bWLRoEV9++SXPPffcRY9Rgywicn5qkEVE3ExgYCBTpkzhjTfewBhDSkoK1157LQkJCSQkJLB8+XIAJkyYwA8//EB8fDyvvvoqxcXFjB8/ng4dOhAbG8u7775ruRIRETu0UIiIiBuoXbs2x48fP2Nb/fr1+fnnn6lTpw7e3t74+fmxc+dOhg0bRnJyMkuXLuWvf/0rn3/+OQBTpkzh4MGDPPXUU5w+fZquXbsya9YswsLCbJQkImKNr+0AIiJSsQoLCxk3bhzr16/Hx8eHHTt2nHe/r7/+mo0bNzJ79mwA8vLy2LlzpxpkEfE4apBFRNzQnj178PHxITAwkOeee44mTZqwYcMGHA4Hfn5+5z3GGMPrr79Ov379KjmtiEjVojnIIiJuJjs7mz/+8Y+MGzcOLy8v8vLyCAoKwtvbmw8//JDi4mIA6tSpw7Fjx0qO69evH2+//TaFhYUA7NixgxMnTlipQUTEJl1BFhFxA6dOnSI+Pp7CwkJ8fX0ZPnw4jzzyCABjxoxh8ODB/Otf/6J///7UqlULgNjYWHx8fIiLi2PkyJE89NBDpKSkkJCQgDGGxo0bM2/ePJtliYhYoZv0RERERERK0RQLEREREZFS1CCLiIiIiJSiBllEREREpBQ1yCIiIiIipahBFhEREREpRQ2yiIiIiEgpapBFREREREr5/yapHseJ2cMUAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#plot prediction\n",
    "fost.plot(res, lookback_size=lookahead)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
